我使用primafaces 6.1和selectonemenu组件来改变网站的语言。一切正常,除此之外,在我更改语言并更新负责语言更改的selectOneMenu组件并选择新的语言翻译后,组件停止工作。语言的新翻译出现在最后点击的旧翻译之下,点击操作不再有效。当我没有使用新项目标签更新负责语言更改的组件时,一切都运行良好。 吼叫是我的jsf代码:
<h:form>
<p:selectOneMenu value="#{worker.locale}" id="selectLanguage"
valueChangeListener="#{worker.onLocaleChange}">
<p:ajax event="change" update="@all" />
<f:selectItems value="#{worker.locales}" />
</p:selectOneMenu>
</h:form>
支持bean:
public void onLocaleChange(ValueChangeEvent e) {
msg = ResourceBundle.getBundle("myApplication", LocaleUtils.toLocale(e.getNewValue().toString()));
locales = new HashMap<String, String>();
locales.put(msg.getString("en_US"), "en_US");
locales.put(msg.getString("de_DE"), "de_DE");
}
我一直在尝试使用listener =&#34;#{worker.onLocaleChange}&#34;在p:ajax中,但这也不起作用。
构建信息
INFO:
ICEsoft Technologies Inc. ICEfaces 3.3.0 内部编号:x 建造日期:130419 修订:34423
和pom配置:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.21</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.icefaces</groupId>
<artifactId>icefaces-ace</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.icefaces</groupId>
<artifactId>icefaces</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.icepush</groupId>
<artifactId>icepush</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.icefaces</groupId>
<artifactId>icefaces-compat</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>6.1</version>
</dependency>
答案 0 :(得分:0)
看起来有一些错误。您可以尝试启用调试消息。 我想使用javax.faces.model.SelectItem作为条目而不是von HashMap将解决问题。