gpt4 book ai didi

java - 重定向到另一个 Action 期间的Struts 2参数编码问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:15 24 4
gpt4 key购买 nike

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

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

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

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

private String message;

Struts.xml 包含两个 Action 的定义

<action name="action" method="action1" class="de.samba.control.actions.Action1">
<result name="success" type="redirectAction">
<param name="actionName">action2</param>
<param name="message">${message}</param>

<action name="action2" class="de.samba.control.actions.Action2">
<result name="success">/pages/showMessage.jsp</result>

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

自己的过滤器:

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>de.samba.control.CharacterEncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

过滤类

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>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

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

最佳答案

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

关于java - 重定向到另一个 Action 期间的Struts 2参数编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4791166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com