Eae, galera!!
To fazendo um site onde o usuário em todas as páginas tem a opção para trocar o Locale desejado.
Essa troca tá sendo feita sem problemas.
O problema é que eu quero que o usuário não saia da página que ele estava antes de alterar o Locale.
Só to conseguindo fazer com que o usuário seja direcionado para um “path” específico (nesse meu código, o “Logon.do”).
To usando o Tomcat 5.5.20 e o struts 1.3.5!
O código do Locale eh esse:
public final class LocaleAction {
private boolean isEmpty(String string) {
return ((string == null) || (string.trim().length() == 0));
}
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
String language = request.getParameter("language");
String country = request.getParameter("country");
Locale locale = getLocale(request);
if ((!isEmpty(language)) && (!isEmpty(country))) {
locale = new Locale(language, country);
} else if (!isEmpty(language)) {
locale = new Locale(language, "");
}
HttpSession session = request.getSession();
session.setAttribute(Globals.LOCALE_KEY, locale);
return mapping.findForward("success");
}
}
No struts.xml, eu tenho:
<action path="/Locale" type="java.actions.LocaleAction">
<forward name="success" path="/Logon.do"/>
</action>
E no JSP:
<html:link action="/Locale?language=pt_BR">Portugu&ecirc;s</html:link>
<html:link action="/Locale?language=en" useLocalEncoding="true">English</html:link>
Já tentei retornar “null”, mas a página de retorno fica em branco.
Já tentei colocar esse código no struts-config.xml,
<action
path="/Locale"
scope="request"
parameter="Locale"
type="org.apache.struts.actions.ForwardAction">
<set-property property="freeAccess" value="true"/>
</action>
<action
path="/doLocale"
scope="request"
type="java.actions.LocaleAction">
<forward name="success" path="Locale"/>
<set-property value="true" property="freeAccess"/>
</action>
mas o Tomcat lança uma excessão: java.lang.NoSuchMethodException: Bean has no property named freeAccess
Alguma idéia???