0

我正在尝试使用以下代码将我的应用程序内部化:

对于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;
}
}

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

4

2 回答 2

0

如果要更改语言环境,则必须在会话中设置语言环境。

如果将此代码放在一个动作中:

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

您将应用程序的语言环境更改为英语。

在您的代码中,您什么也没做,您只是设置了一个变量locale,而您什么也不做。

于 2012-10-23T18:53:02.957 回答
0

如果您真的想在操作中更改语言环境,请使用

ActionContext.getContext().setLocale(locale)

并将其放入 HTTP 会话中

session.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale)

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

于 2012-10-23T18:56:03.423 回答