我将<h:commandButton>
标记更改为搜索页面上的PrimeFaces <p:commandButton>
标记,我的数据表停止显示结果。添加update
属性后,事情再次发挥作用。我只是想了解它是如何实现整体功能(viewscope,action vs actionListener等)还是真正需要update
属性?
<h:form id="search_form">
<p:inputText id="search" value="#{searchBean.searchString}" />
<p:commandButton update="search_form" value="Search" action="#{searchBean.searchByString}" >
</p:commandButton>
<p:dataTable id="output" var="res" value="#{searchBean.results}" emptyMessage="No results found with given criteria">
etc...
@ViewScoped
@ManagedBean
public class SearchBean {
@Inject
private SearchRepository searchRepository;
private List<Results> res;
private String searchString;
public SearchBean() {
}
public String searchByString()
{
this.setRes(searchRepository.searchBySingleString(searchString));
}
答案 0 :(得分:6)
h:commandButton
和p:commandButton
之间的区别之一是第二个默认执行ajax请求,而第一个执行普通 POST 请求。
在ajax请求中,您必须指定在发送表单时要处理的内容以及响应发生时要更新的内容。 p:commandButton
默认情况下不更新任何内容,这就是为什么您的表格未正确填充的原因。
另见: