Struts html:link tag的问题

GeorgeHill 2004-01-19 12:09:52
这样的一个html:link:
<html:link page="/action.do" paramName="name" paramProperty="property" paramId="id">链接</html:link>。如果name里面的property是中文,那么怎么在后面的Action操作里面如何正确获得该中文?这个问题困扰了我很久了。
...全文
47 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhan_wanhui 2004-01-19
  • 打赏
  • 举报
回复
http://www.chedong.com/tech/unicode_java.html#webapp
wuhan_wanhui 2004-01-19
  • 打赏
  • 举报
回复
像你这种情况Struts框架内link tag不能解决问题.
GeorgeHill 2004-01-19
  • 打赏
  • 举报
回复
由于需要支持多语言,所以在web.xml里面指定character-encoding应该是不行的。其实我知道代替html:link的方法,像这样用<a href>就能够解决。<a href='action.do?id=<bean:write name="name" property="property"/>'>链接</a>。不过我想具体的了解下能否在Struts的框架内解决问题。
wuhan_wanhui 2004-01-19
  • 打赏
  • 举报
回复
或者
在WEB-INF/web.xml中设置character-encoding来解决:
<web-app character-encoding="GBK">
...
</web-app>

wuhan_wanhui 2004-01-19
  • 打赏
  • 举报
回复
如果要用中文做参数,那你们重新写一个tag,encode时不要用UTF-8
GeorgeHill 2004-01-19
  • 打赏
  • 举报
回复
有时你不得不用中文做参数的。这个setCharacterEncoding方法不能够解决问题的。因为html:link这个tag在转换URL的时候做了编码的工作,我看Struts的源代码似乎是用调用了URLEncoder.encode(str, "UTF-8")这样的方法。不过我用URLDecoder.decode(str, "UTF-8")却不能够获得正确的字符串。
wuhan_wanhui 2004-01-19
  • 打赏
  • 举报
回复
参数用中文,你这不是自找麻烦吗?
下面是一段说明这个问题的话:
如果通过 get/post 方式从 browser 返回的参数值中包含汉字信息, servlet 将无法得到正确的值。SUN的 J2SDK 中,HttpUtils.parseName 在解析参数时根本没有考虑 browser 的语言设置,而是将得到的值按 byte 方式解析。这是网上讨论得最多的 encoding 问题。因为这是设计缺陷,只能以 bin 方式重新解析得到的字符串;或者以 hack HttpUtils 类的方式解决。参考文章 2 均有介绍,不过最好将其中的中文 encoding GB2312、 CP1381 都改为 GBK,否则遇到 GBK 汉字时,还是会有问题。
Servlet API 2.3 提供一个新的函数 HttpServeletRequest.setCharacterEncoding 用于在调用 request.getParameter(“param_name”) 前指定应用程序希望的 encoding,这将有助于彻底解决这个问题。
boyst 2004-01-19
  • 打赏
  • 举报
回复
''
GeorgeHill 2004-01-19
  • 打赏
  • 举报
回复
你这个方法我已经尝试过了。不能解决问题。
NewTypeQ 2004-01-19
  • 打赏
  • 举报
回复
<html:link page="/action.do" paramName="name" paramProperty="property" paramId="id">
表示request参数paramId = paramName.paramProperty;
即id = name.getProperty();

/**
*struts-config.xml
*/
<action parameter="id"
type="MyAction"
path="/action.do">
<forward name="success" path="/pages/index.jsp" />
</action>

------------------------------
/**
*MyAction.java
*/
...
excute(){
...
String id = request.getParameter("id");
//如果遇到中文问题,尝试
//String id = new String(request.getParameter("id").getBytes("ISO8859_1"));
...
}

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧