在练习国际化的时候碰到 h:selectOneRadio 不能及时重建视图的问题,代码如下:
<f:view locale="#{user.locale}">
<f:loadBundle basename="messages" var="msg" />
<h:form>
<h:selectOneRadio value="#{user.locale}" onchange="this.form.submit()" valueChangeListener="#{user.changeLocale}" immediate="true">
<f:selectItem itemLabel="#{msg.zh}" itemValue="zh" />
<f:selectItem itemLabel="#{msg.en}" itemValue="en" />
</h:selectOneRadio>
</h:form>
</f:view>问题是:改变单选的值的时候,页面语言并不能立即改变,需要用鼠标单击下其他空白区域,页面才能改变,不知道这是什么问题.
public void changeLocale(ValueChangeEvent event){
this.locale=(String)event.getNewValue();
}我的想法是选中英文按钮的时候,页面语言是英文的,选中中文按钮的时候,页面语言是中文的.请问上面的代码怎么改正或其他方法实现?
<f:view locale="#{user.locale}">
<f:loadBundle basename="messages" var="msg" />
<h:form>
<h:selectOneRadio value="#{user.locale}" onchange="this.form.submit()" valueChangeListener="#{user.changeLocale}" immediate="true">
<f:selectItem itemLabel="#{msg.zh}" itemValue="zh" />
<f:selectItem itemLabel="#{msg.en}" itemValue="en" />
</h:selectOneRadio>
</h:form>
</f:view>问题是:改变单选的值的时候,页面语言并不能立即改变,需要用鼠标单击下其他空白区域,页面才能改变,不知道这是什么问题.
public void changeLocale(ValueChangeEvent event){
this.locale=(String)event.getNewValue();
}我的想法是选中英文按钮的时候,页面语言是英文的,选中中文按钮的时候,页面语言是中文的.请问上面的代码怎么改正或其他方法实现?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货