struts2中重定向到Action后中文参数变成乱码
<actionname="getDueInfoByDueId"class="com.123.pmptest.web.TestManagerAction"method="g...
<action name="getDueInfoByDueId" class="com.123.pmptest.web.TestManagerAction"
method="getDueInfoByDueId">
<result name="success_dueInfo" >/WEB-INF/views/pmptest/dueBaseInfo.jsp</result>
</action>
<action name="saveDue" class="com.123.pmptest.web.TestManagerAction"
method="saveDue">
<result name="success_saveDue" type="redirectAction">
<param name="actionName">getDueInfoByDueId</param>
<param name="dueId">${dueId}</param>
<param name="redirect">${redirect}</param>
</result>
</action>
dueId 是 TestManagerAction 这个类的属性(String)比如我 dueId取值为“天地”,在"saveDue"方法用,还是正常的“天地”,重定向到 getDueInfoByDueId 之后,"dueId"就变成乱码了,求教如何解决
ps:我的代码是utf-8,jsp是GBK 展开
method="getDueInfoByDueId">
<result name="success_dueInfo" >/WEB-INF/views/pmptest/dueBaseInfo.jsp</result>
</action>
<action name="saveDue" class="com.123.pmptest.web.TestManagerAction"
method="saveDue">
<result name="success_saveDue" type="redirectAction">
<param name="actionName">getDueInfoByDueId</param>
<param name="dueId">${dueId}</param>
<param name="redirect">${redirect}</param>
</result>
</action>
dueId 是 TestManagerAction 这个类的属性(String)比如我 dueId取值为“天地”,在"saveDue"方法用,还是正常的“天地”,重定向到 getDueInfoByDueId 之后,"dueId"就变成乱码了,求教如何解决
ps:我的代码是utf-8,jsp是GBK 展开
2个回答
展开全部
接收的时候用URLDecoder。我刚遇到的问题
我的配置文件,
<action name="*Action" class="articleAction" method="{1}">
<result name="remove" type="redirectAction">
<param name="actionName">loadArticles</param>
<param name="namespace">/backstage/home</param>
<param name="type.type">${type.type}</param>
</result>
<result name="toAddArticle">/backstage/home/addArticle.jsp</result>
</action>
public String execute() throws UnsupportedEncodingException{
String type1 = URLDecoder.decode(this.type.getType(), "utf-8");
this.type.setType(type1);
}
//这个方法绝对值得楼主试一试。注意是在execute里面,我好向在setType里面转换的时候出现了type为空值的现象。祝你成功
我的配置文件,
<action name="*Action" class="articleAction" method="{1}">
<result name="remove" type="redirectAction">
<param name="actionName">loadArticles</param>
<param name="namespace">/backstage/home</param>
<param name="type.type">${type.type}</param>
</result>
<result name="toAddArticle">/backstage/home/addArticle.jsp</result>
</action>
public String execute() throws UnsupportedEncodingException{
String type1 = URLDecoder.decode(this.type.getType(), "utf-8");
this.type.setType(type1);
}
//这个方法绝对值得楼主试一试。注意是在execute里面,我好向在setType里面转换的时候出现了type为空值的现象。祝你成功
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样改,用redirect类型
<result name="success_saveDue" type="redirect">
<param name="location">getDueInfoByDueId.action</param>
<param name="dueId">${dueId}</param>
<param name="redirect">${redirect}</param>
<param name="encode">true</param>
</result>
不过你这么传参数不闲麻烦吗?
我一般是这样传
<result name="success_saveDue" type="redirect">
getDueInfoByDueId.action?dueld=${dueld}&&redirect=${redirect}
</result>
<result name="success_saveDue" type="redirect">
<param name="location">getDueInfoByDueId.action</param>
<param name="dueId">${dueId}</param>
<param name="redirect">${redirect}</param>
<param name="encode">true</param>
</result>
不过你这么传参数不闲麻烦吗?
我一般是这样传
<result name="success_saveDue" type="redirect">
getDueInfoByDueId.action?dueld=${dueld}&&redirect=${redirect}
</result>
追问
还是乱码
追答
你加了 true这句?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询