在Primefaces中,Managed Property未获得更新

时间:2014-11-26 12:37:54

标签: jsf primefaces

我正在使用一个ajax框,它将根据框中提供的字符串获取对象列表,如下所示:

<p:inputText id="zid" placeholder="Search" value="#{resourceListView.wanted}">
                    <p:ajax event="keyup" update=":form:abc"
                        listener="#{resourceListView.SearchResources}" />
                </p:inputText>

SearchResources将根据输入框的值获取对象,如下所示:

public void SearchResources(String wanted) {
        this.resources=resourceServiceImpl.listResources(wanted);
    }

我在DAO中运行查询,这是为了根据搜索返回对象。但它没有返回任何东西。所以我sysout查询,查询如下:

SELECT * FROM test.resourcemaster where Resource_ZID like '%javax.faces.event.AjaxBehaviorEvent[source=org.primefaces.component.inputtext.InputText@79d635]%' OR Employee_ID like '%javax.faces.event.AjaxBehaviorEvent[source=org.primefaces.component.inputtext.InputText@79d635]%' OR First_Name like '%javax.faces.event.AjaxBehaviorEvent[source=org.primefaces.component.inputtext.InputText@79d635]%' OR Last_Name like '%javax.faces.event.AjaxBehaviorEvent[source=org.primefaces.component.inputtext.InputText@79d635]%'

该查询应该是在'通缉'上搜索

有人可以解释是什么问题。

1 个答案:

答案 0 :(得分:2)

您的SearchResources()方法接受一个参数,您不从页面提供该参数。这就是AjaxBehaviorEvent被传递给它的原因(event.toString(),更准确地说),如果你没有在方法调用中指定参数,这是默认值。

尝试将ajax侦听器更改为listener="#{resourceListView.SearchResources(resourceListView.wanted)}"

或者,只需从方法中删除参数,然后使用bean wariable wanted

public void SearchResources() {
    this.resources = resourceServiceImpl.listResources(this.getWanted());
}