我尝试用下一个代码内化我的应用程序:
对于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;
}
}
当我看到语言是否有变化时,我什么也看不见,没有变化。为什么?。非常感谢
答案 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中的本地化。