Struts 2参数编码问题在重定向到另一个动作期间

我尝试重定向到另一个动作并传输一个字符串参数。 这没有问题,但如果我使用德语变音符号,我会遇到编码问题。

这是我的代码:第一个动作有一个带有getter和setter的字段消息。 在动作中我设置了String。

private String message; public String action1() { message = "ö"; return SUCCESS; } 

第二个动作也有一个带有getter和setter的字段消息。

 private String message; 

Struts.xml定义了这两个动作

   action2 ${message} 

  /pages/showMessage.jsp 

如果我不使用重定向并在jsp上显示消息,那么一切正常。 编码是正确的。 如果我重定向到另一个动作,则消息字段的setter设置错误的formattet字符串“ö”。 我找不到解决方案。 有人可以帮帮我吗?

自己的filter:

  CharacterEncodingFilter de.samba.control.CharacterEncodingFilter   CharacterEncodingFilter *.action  

筛选级

 public class CharacterEncodingFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain next) throws IOException, ServletException { String encoding = request.getCharacterEncoding(); if (encoding == null || encoding.length() == 0) { request.setCharacterEncoding("UTF-8"); } encoding = request.getCharacterEncoding(); next.doFilter(request, response); } } 

然后我尝试了这个filter:

  encodingFilter org.springframework.web.filter.CharacterEncodingFilter  encoding UTF-8   forceEncoding true   

这也行不通。 有人知道这个问题吗? 也许它是由Spring Security引起的。

问题是tomcat问题而不是struts问题。 解决方案是在server.xml中将连接器的URIEncoding设置为“utf-8”。 见http://struts.apache.org/2.0.14/docs/how-to-support-utf-8-uriencoding-with-tomcat.html

也许问题在于生成url(进行动作调用)的方式。 例如,如果url生成如下所示,请注意属性escape :

       

这个问题看起来与您遇到的问题相同:

Struts2请求字符编码

我想你可以尝试在会话中保存你的消息变量。 而且,afaik,一般来说,在Web应用程序中,将信息从1个动作传递到另一个动作的推荐方法是使用会话。

如果其他任何事情都失败了,我想有一种hackie方式。 您可以将结果发布到普通网页(jsp)。 您将该消息值放在输入元素中。 然后你写一个javascript,它自动提交该输入元素内的值。 不过不推荐。