Jsf 清除支持bean中的输入验证错误
我有一个带有单元格编辑器的数据表。我只想让一些(选定的)行可编辑。当用户使用单元格编辑器时,我希望在设置值后立即执行输入验证 因此,我在数据表中使用cellEdit事件,并从事件处理程序触发验证失败Jsf 清除支持bean中的输入验证错误,jsf,primefaces,Jsf,Primefaces,我有一个带有单元格编辑器的数据表。我只想让一些(选定的)行可编辑。当用户使用单元格编辑器时,我希望在设置值后立即执行输入验证 因此,我在数据表中使用cellEdit事件,并从事件处理程序触发验证失败 <p:ajax event="cellEdit" listener="#{bean.onEditCell}" update=":formId:propertySelect" /> 这很有魅力。如果用户输入无效值,则编辑器不会关闭,并显示错误消息 不起作用的是用户随后输入一个有效值。
<p:ajax event="cellEdit" listener="#{bean.onEditCell}" update=":formId:propertySelect" />
这很有魅力。如果用户输入无效值,则编辑器不会关闭,并显示错误消息
不起作用的是用户随后输入一个有效值。cellEdit事件不会再次触发,因为表单处于“输入验证失败状态”
我花了一天时间试图解决这个问题:
- 我想在用户设置新值时重置输入验证-resetInput仅从按钮起作用。我无法让它在价值变化上工作
- 我没有找到如何直接从JavaScript重置字段
- 如果我将“onchange”事件和“remoteCommand”组合在一起,则在支持bean中调用一个处理程序,但是我找不到UIInput来调用它的resetValue()
我正在寻找一种方法来清除ID为“pvSimple”、“pvArea”或“pvEnum”的输入字段上的输入验证错误。我没有尝试过,但是
有一个resetValues
属性,理论上应该可以工作(与您打算使用
的方法相同)。另见a.o.@BalusC:谢谢,我知道这一点,但我没有找到一种方法将所有这些结合到一个有效的解决方案中。所需的功能是:如果输入组件上存在输入验证失败,并且用户输入了一个新值,则该字段应清除验证失败并验证新值。实际上,我刚刚发现它可以工作,但有一个例外:我在SelectOne菜单上测试,在验证错误发生之前,更改值也会触发编辑完成操作。出现验证错误后,用户甚至必须在下拉菜单上特别按Enter键。
<p:dataTable id="propertySelect" value="#{bean.propertyValues}" var="prop"
editable="true" editMode="cell" scrollable="true"
scrollHeight="200" widgetVar="propSelectTable"
filteredValue="#{bean.filteredPVs}">
<p:ajax event="cellEdit" listener="#{bean.onEditCell}" update=":#{formId}:propertySelect" />
<p:ajax event="filter" oncomplete="updateToggle()" />
<p:column id="rowSelection">
<f:facet name="header">
<p:selectBooleanCheckbox id="toggleAll" value="#{bean.selectAllRows}">
<p:ajax listener="#{bean.handleToggleAll}" update=":#{formId}:propertySelect" />
</p:selectBooleanCheckbox>
</f:facet>
<p:selectBooleanCheckbox value="#{prop.selected}">
<p:ajax update=":#{formId}:propertySelect" oncomplete="updateToggle()" listener="#{bean.rowSelectListener(prop)}"/>
</p:selectBooleanCheckbox>
</p:column>
<p:column headerText="Property">
<h:outputText value="#{prop.name}" />
</p:column>
<p:column headerText="Description">
<h:outputText value="#{prop.description}" />
</p:column>
<p:column headerText="Value">
<p:cellEditor rendered="#{prop.selected}">
<f:facet name="output">
<h:outputText value="#{bean.displayPV(prop)}" />
</f:facet>
<f:facet name="input">
<p:inputText id="pvSimple" value="#{prop.uiValue}" rendered="#{prop.propertyValueUIElement eq 'INPUT'}" />
<p:inputTextarea id="pvArea" rows="7" value="#{prop.uiValue}"
rendered="#{prop.propertyValueUIElement eq 'TEXT_AREA'}" />
<p:selectOneMenu id="pvEnum" value="#{prop.uiValue}"
rendered="#{prop.propertyValueUIElement eq 'SELECT_ONE_MENU'}">
<f:selectItem itemLabel="<Select value>" itemValue="" />
<f:selectItems value="#{prop.enumOptions}" var="enum" itemLabel="#{enum}" itemValue="#{enum}" />
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
<h:outputText value="-" rendered="#{!prop.selected}" />
</p:column>