提交自定义数据/输入字段,而`p:autocomplete`发送查询以获取建议

时间:2014-07-26 19:30:10

标签: jsf primefaces

h:inputText发送查询以从服务器获取建议时,如何提交一些p:autocomplete字段/发送自定义数据。我试过这样做:

<p:autoComplete completeMethod="..." >
    <p:ajax event="query" onstart="method1()" process="@this, field1"/>
</p:autoComplete>
<h:inputHidden id="field1" value="#{search.value2}"/>

该字段似乎与发送的数据一起提交给服务器,但是该值未在托管bean中设置。对于上述情况,上述p:ajax的流程属性似乎无法正常工作。那么,我如何提交这个h:inputHidden#field1以及查询建议?

1 个答案:

答案 0 :(得分:2)

<p:autoComplete/> completeMethodAPPLY_REQUEST_VALUES阶段执行。如您所知,在JSF生命周期中,请求值不会提交到支持bean模型,直到UPDATE_MODEL_VALUES阶段,<{em> APPLY_REQUEST_VALUES之后的完整阶段

这意味着completeMethod无法访问在视图中输入的任何(新)值。

要访问依赖于bean的任何内容,您必须通过直接从组件中提取值来艰难地进行操作:

/**
    Find the component
*/
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
UIComponent hiddenInput= viewRoot.findComponent("someId");   

/**
   Get the value
*/
String theValue = hiddenInput.getSubmittedValue().toString();