Проблема кодирования параметров Struts 2 во время перенаправления на другое действие

Я пытаюсь перенаправить на другое действие и передать строковый параметр. Это работает без проблем, но у меня проблемы с кодированием, если я использую немецкие умляуты.

Вот мой код: Первое действие имеет полевое сообщение с геттером и сеттером. В действии я установил строку.

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.

6
задан Rafael 25 January 2011 в 16:44
поделиться