Struts2 Action中文亂碼問題的解決辦法
阿新 • • 發佈:2019-02-07
一、前臺表單
<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之前才能生效。