1. 程式人生 > >Struts2 Action中文亂碼問題的解決辦法

Struts2 Action中文亂碼問題的解決辦法

一、前臺表單

<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之前才能生效。