在 JSF 2.X 中,我可以仅在验证成功时渲染组件吗?
在我的申请中,我有许多必须填写的字段。这些数据可以通过搜索键从 WebService 导入。
当用户输入有效的搜索键时,系统会搜索其他字段并使用新值呈现它们。但是当用户输入一个不存在的键(或任何其他验证错误)时,服务器会生成一个验证错误,但仍会呈现字段,从而丢失任何已填充的数据。
我需要的是用户可以执行查询,并且如果查询没有返回结果,这不会影响他已经输入的任何数据。
下面是一个代码示例。因此,如果用户填写了updateThisOnSuccess中的字段,并且在尝试查询但未成功后,填写的值不会丢失。
<h:inputText value="#{controller.searchWebService}" >
<f:ajax execute="@this" render="updateThisOnSuccess messages" />
</h:inputText>
<h:panelGroup id="updateThisOnSuccess">
<h:inputText value="#{controller.field}" />
<!-- other fields -->
</h:panelGroup>
提交字段值以运行搜索似乎也不是一个选项,因为这将导致需要验证updateThisOnSuccess中的字段。
注意:我看到了@BalusC 对类似问题的回答,但这与我想知道的不同,在这种情况下,总是呈现foo-holder并且foo是调节的。这不是我的情况,因为这种方法会使控件在验证失败时不出现。