日期:2014-05-18  浏览次数:20728 次

DynaActionForm中的中文问题
<form-bean     name= "TestForm "   type= "org.apache.struts.action.DynaActionForm "     >
                                 
                                  <form-property
                                          initial= "如何显示中文啊 "
                                          name= "mybeanvariable1 "
                                          type= "java.lang.String "/>
          </form-bean>

//initial= "如何显示中文啊 ",在页面上却是乱码,如何解决啊?谢谢


------解决方案--------------------
如果是和数据库打交道,楼上的做法是对的
如果是页面间的中文问题,你参考一下下面的,我自己总结的


一般中文过滤是要过滤所有的网页,如果用request.setencodingCharater( "gbk ")也 可以,但是有100个网业时就很麻烦
struts框架为我们提供了一个类 ,requestProcessor,他其中有一个方法,processProcessor();当用户发出一个请求时
会有一个拦截器actionServelet,他会自动调用他的process方法,其实他的process方法干了一件什么事了。他就是去调用
requestProcessor中的processProcessor(),所以我们可以去写一个类去继承requestProcessor,去覆盖他的方法就行了

public class CharSet extends RequestProcessor {

protected boolean processPreprocess(HttpServletRequest request, HttpServletResponse response) {

String charset=request.getSession().getServletContext().getInitParameter( "charset ");
try {

request.setCharacterEncoding(charset);
} catch (UnsupportedEncodingException e) {

}
return super.processPreprocess(request, response);
}
上面的列子是从配置文件中读区信息。灵活更大。也可以直接request.setCharacterEncoding(gbk);
从配置文件只能是从web.xml文件中读

<context-param>
<param-name> charset </param-name>
<param-value> utf-8 </param-value>
</context-param>

一定注意是context-param标签,不要也成

<servlet>
<init-param> 这是servlet初始化的
<param-name> charset </param-name>
<param-value> utf-8 </param-value>
</init-param>
</servlet>

最后还要在配置文件中 <controller processorClass= "com.xaccp.struts.action.CharSet "/>