Я пытаюсь перенаправить на другое действие и передать строковый параметр. Это работает без проблем, но у меня проблемы с кодированием, если я использую немецкие умляуты.
Вот мой код: Первое действие имеет полевое сообщение с геттером и сеттером. В действии я установил строку.
private String message;
public String action1()
{
message = "ö";
return SUCCESS;
}
Второе действие имеет также сообщение поля с геттером и сеттером.
private String message;
Struts.xml с определением обоих действий
<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 все работает нормально. Кодировка верная. Если я перенаправляю на другое действие, установщик поля сообщения устанавливает неправильную строку форматирования «Ã¶». Я не могу найти решение. Кто-нибудь может мне помочь?
Собственный фильтр:
<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>
Filter-class
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.