Struts2内化

时间:2012-10-23 18:47:18

标签: java internationalization struts2

我尝试用下一个代码内化我的应用程序:

对于jsp我有这个:

  <table>
    <tr class="trlleno">
      <td>
        <div id="Panel_cliente">
          <s:select label="Selecciona un idioma" name="IdiomaID" id="IdiomaID" 
          headerValue="--Selecciona un idioma--" headerKey="-1" 
          list="#{'1':'Español','2':'English','3':'Deutch','4':'Português','5':'русский','6':'Français'}" value="2"/> 
        </div> 
      </td>
    </tr>

    <td class="trboton" colspan="2" align="center">
      <input type="submit" name="submit" id="submit" value="CAMBIAR IDIOMA" class="divboton"/>
    </td>
  </tr>
</table> 
</form>

在我的行动中:

public class CambiarIdiomaAction extends ActionSupport implements ServletRequestAware{

private HttpServletRequest servletRequest;
Map session;

@Override
public String execute() throws Exception {
    session = ActionContext.getContext().getSession();

    int idm=Integer.valueOf(servletRequest.getParameter("IdiomaID"));
     System.out.println(idm);
     //Trying with English
     Locale locale=new Locale("en","EN");
    return "SUCCESS";
}


@Override
public void setServletRequest(HttpServletRequest request) {
    this.servletRequest = request;
}

public HttpServletRequest getServletRequest() {
    return servletRequest;
}
}

当我看到语言是否有变化时,我什么也看不见,没有变化。为什么?。非常感谢

2 个答案:

答案 0 :(得分:0)

如果要更改区域设置,则必须在会话中设置区域设置。

如果您将此代码放入Action:

ActionContext context = ActionContext.getContext();
context.setLocale(Locale.ENGLISH);

您会将应用的区域设置更改为英语。

在你的代码中,你什么都不做,你只是设置一个变量locale,你不用做任何事情。

答案 1 :(得分:0)

如果您确实想要更改操作中的区域设置,请使用

ActionContext.getContext().setLocale(locale)

并将其放入HTTP会话

session.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale)

但Struts2具有开箱即用的本地化支持。我建议你阅读Struts2 http://struts.apache.org/2.x/docs/localization.html中的本地化。