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にはすぐに使用できるローカリゼーションサポートがあります。Struts2http : //struts.apache.org/2.x/docs/localization.htmlでのローカリゼーションについて読むことをお勧めします。

于 2012-10-23T18:56:03.423 に答える