[英]JSF 2 - Ajax Property not found
我收到此错误:
execute="#{localeManager.changeLocale}": Property 'changeLocale' not found on type xyz.com.i18n.LocaleManager
LocaleManager在哪里:
@ManagedBean
@ViewScoped
public class LocaleManager implements Serializable
{
// other codes here
public static void changeLocale(AjaxBehaviorEvent event) {
newLocale = (Locale) new Locale((String) event.toString());
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("selectedLocale", newLocale);
}
}
我在这里调用bean的方法:
<h:selectOneMenu id="selectLang" immediate="true" value="#{langListing.language}">
<f:ajax event="change" execute="#{localeManager.changeLocale}" />
<f:selectItems value="#{langListing.languages}" />
</h:selectOneMenu>
我正在通过尝试此代码来学习AJAX。 但是我不明白Ajax如何评估bean的方法。 这是一个直接解决的问题吗?
根据<f:ajax>
标记文档 , execute
属性应引用要在服务器端处理的客户端ID的集合。 这不应引用某些bean操作方法。 即将到来的异常是因为它期望使用getter方法来返回客户端ID的集合。
您想改用listener
属性。
<f:ajax listener="#{localeManager.changeLocale}" />
请注意, h:selectOneMenu
的默认事件已经是valueChange
。 您可以忽略它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.