我正在使用一个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]%'
该查询应该是在'通缉'上搜索
有人可以解释是什么问题。
答案 0 :(得分:2)
您的SearchResources()
方法接受一个参数,您不从页面提供该参数。这就是AjaxBehaviorEvent
被传递给它的原因(event.toString()
,更准确地说),如果你没有在方法调用中指定参数,这是默认值。
尝试将ajax侦听器更改为listener="#{resourceListView.SearchResources(resourceListView.wanted)}"
或者,只需从方法中删除参数,然后使用bean wariable wanted
public void SearchResources() {
this.resources = resourceServiceImpl.listResources(this.getWanted());
}