有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

未找到java JSF 2 Ajax属性

我得到了这个错误:

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的方法的。这是一个需要直接解决的问题吗


共 (1) 个答案

  1. # 1 楼答案

    根据^{} tag documentationexecute属性应该引用要在服务器端处理的客户机id的集合。这不应该引用某些bean操作方法。异常即将出现,因为它需要一个getter方法,该方法返回一组客户端ID

    您想改用listener属性

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

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