【问题标题】:Primefaces validate cell editingPrimefaces 验证单元格编辑
【发布时间】:2014-03-08 02:36:13
【问题描述】:

我在 Primefaces 中使用单元格编辑器来更新数据表中的单元格。但是,我想在确认更改之前验证输入。

我为此目的使用了FacesContext.getCurrentInstance().validationFailed();,但仍在更新单元格。

这就是我的实现方式:

<p:dataTable value="#{bean.list}" var="var" id="table" editMode="cell" editable="true">
    <p:ajax event="cellEdit" listener="#{bean.onCellEdit}" update="@form"/>
    <p:column headerText="Quantity">
        <p:cellEditor>
            <f:facet name="output">
                 <h:outputText value="#{var.quantity}"/>
            </f:facet>  
            <f:facet name="input">
                   <p:inputText value="#{var.quantity}"/>
             </f:facet>
        </p:cellEditor>
    </p:column>
</p:dataTable>

豆方法:

public void onCellEdit(CellEditEvent event) {
    //validate new value
     if(!validate(event.getNewValue())){
        //if validation returned false stop updating the cell
        FacesContext.getCurrentInstance().validationFailed();
    }
}

如果新值未通过验证,我想停止更新单元格,但无论如何单元格都会更新。我该如何解决这个问题?

PS:Primefaces 3.5

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    您所观察到的情况是因为 celleditor 的事件发生在 INVOKE_APPLICATION 阶段,任何验证失败都为时已晚,无法产生任何影响。


    您可以像使用任何其他 JSF 输入组件一样在 &lt;p:inputText/> 上使用普通的 validator 属性。不管它是&lt;p:cellEditor/&gt; 的一个方面,行为都是一样的

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多