从支持bean清除输入验证错误

时间:2015-03-16 21:31:29

标签: jsf primefaces

我有一个带有单元格编辑器的dataTable。我想只有一些(选定的)行可编辑。当用户使用单元格编辑器时,我想在设置值后立即执行输入验证。

所以我在数据表中使用cellEdit事件,并从事件处理程序中触发验证失败。

<p:ajax event="cellEdit" listener="#{bean.onEditCell}" update=":formId:propertySelect" />

这就像一个魅力。如果用户输入的值无效,则编辑器不会关闭,并显示错误消息。

什么不起作用是用户之后输入有效值。由于表单处于“输入验证失败状态”,因此cellEdit事件不会再次触发。

我已经失去了一天试图解决这个问题:

  • 我想在用户设置新值时重置输入验证 - resetInput仅适用于按钮。我无法让它改变价值。
  • 我没有找到如何直接从JavaScript重置字段。
  • 如果我将“onchange”事件和“remoteCommand”组合在一个支持bean中调用一个处理程序,但是我找不到UIInput来调用它上面的resetValue()。

    <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="&lt;Select value&gt;" 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>
    

我正在寻找一种方法来清除输入字段上的输入验证错误,其中包含ids“pvSimple”,“pvArea”或“pvEnum”。

0 个答案:

没有答案