当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以及查询建议?
答案 0 :(得分:2)
<p:autoComplete/>
completeMethod
在APPLY_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();