java - JSF 2 - 找不到 Ajax 属性

标签 java jsf jsf-2

我遇到了这个错误:

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> tag documentation execute属性应该指的是要在服务器端处理的客户端 ID 的集合。这不应该引用某些 bean 操作方法。出现异常是因为它需要一个返回客户端 ID 集合的 getter 方法。

您想使用 listener属性代替。

<f:ajax listener="#{localeManager.changeLocale}" />

请注意 h:selectOneMenu 的默认事件已经是valueChange .你可以忽略它。

关于java - JSF 2 - 找不到 Ajax 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5029878/

相关文章:

java - 为什么这个 EL 表达式无效?

java - Primefaces p :dataTable showing without message "No records found."?

具有HTML页面而不是XHTML的JSF 2

java - java是否也在用户定义的泛型类中实现类型删除?

java - hibernate注释类中出现错误

java - Java中的List如何实现静态对非静态的引用?

Java Mail api,消息处理期间连接丢失

jQuery - 将 onclick 添加到 TR

jsf - 对于大值没有指数表示法的 Double.toString

spring - 将 bean Autowiring 到 JSF 托管 bean 时为空指针