您的位置:首页 > 编程语言 > Java开发

Struts2 Action中文乱码问题的解决办法

2013-04-17 17:31 561 查看
一、前台表单
 
  <form
action="orgAdd.action"
method="post">

          组织名称:<input
type="text"
name="name"
value=""/>

          组织描述:<input
type="text"
name="description"
value=""/>

          <input
type="submit"
value="提交"
/>

  </form>

二、后台Action类
public
class OrgAddAction
extends ActionSupport {

    private
String name;

    private String description;

    public String
getName()
{

        return name;

    }

    public void
setName(String
name)
{

        this.name
= name;

    }

    public String
getDescription()
{

        return description;

    }

    public void
setDescription(String description)
{

        this.description
= description;

    }    

    @Override

    public String
execute()
throws Exception
{

        System.out.println("组织名称:"
+ name);

    }
}

三、结果输出

组织名称:???

四、问题解决办法

<struts>

    <constant name="struts.i18n.encoding" value="GBK"/> 
 
    <package name="struts2" extends="struts-default">    

        <action name="orgAdd" class="orgAddAction">

            <result name="success">/org/index.jsp</result>

        </action>

    </package>
</struts>

通过i18n(Internationalization 编码国际化)和 constant标签设置Action的传值编码为"GBK",当然此编码要跟页面中的编码一致才不会造成中文乱码。

同时需要在web.xml中加上过滤器,如下:

    <filter>

        <filter-name>encodingFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>

            <param-name>encoding</param-name>

            <param-value>GBK</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>encodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <filter>

        <filter-name>struts2</filter-name>

        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

    </filter>

编码过滤器必须加载在struts之前才能生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: