Jsf 在p:dataTable中使用验证器时出现的问题

Jsf 在p:dataTable中使用验证器时出现的问题,jsf,primefaces,datatable,validation,Jsf,Primefaces,Datatable,Validation,当我在dataTable的字段中使用f:validator时,它不起作用,如果我在validator类中插入断点,它将永远不会执行 我的数据表: <p:dataTable value="#{contrato.plantillaPrograma}" var="pl" scrollHeight="300" rendered="#{contrato.abrirPrograma}" autoUpdate="true"> <p:column headerText="#{txtMs

当我在dataTable的字段中使用f:validator时,它不起作用,如果我在validator类中插入断点,它将永远不会执行

我的数据表:

<p:dataTable value="#{contrato.plantillaPrograma}" var="pl" scrollHeight="300" rendered="#{contrato.abrirPrograma}" autoUpdate="true">
    <p:column headerText="#{txtMsg['crearContrato.fecha']}" style="width:125px"
    sortBy="#{pl.fecha}">
        <h:inputText value="#{pl.fecha}">
            <f:converter converterId="dateConverter" />
        </h:inputText>
    </p:column>
    <p:column headerText="#{txtMsg['crearContrato.programa']}" style="width:125px"
    sortBy="#{pl.programa}">
        <h:inputText value="#{pl.programa}" />
    </p:column>
    <p:column headerText="#{txtMsg['crearContrato.fechaFactura']}" style="width:125px"
    sortBy="#{pl.fechaFactura}">
        <p:inputText value="#{pl.fechaFactura}" validator="sheetEnFirme">
            <f:converter converterId="dateConverter"/>
        </p:inputText>
    </p:column>
</p:dataTable>
确保
{contato}
bean至少是
@ViewScoped
。确保您不是在其getter方法中准备
plantillaprogramma
,而是在bean的(post)构造函数中准备。确保
dateConverter
没有抛出
ConverterException
,您应该在
或服务器日志中的faces消息中注意到该异常

顺便问一下,你为什么不把内置的
用于日期呢?

问题解决了


我的问题出现在命令按钮上,我有属性process=“@this”,当删除时,验证工作正常

Hello,bean是ViewScope,plantillaPrograma是通过fileUpload方法生成的(上传excel文件我生成表),dateConverter没有引发任何异常,我检查了服务器日志,没有任何问题。我使用sutom converter是因为当我开始制作应用程序的架构时,我定义了一些转换器,可能忽略了已经实现的转换器,但是转换器工作正常,问题出在验证器上。我不知道为什么,但这只发生在我在dataTable内部使用时,在其他视图中,工作正常。感谢您的回答您在给定代码中不使用
f:validator
,而是使用
validator
属性(通常应相同)。但是你用f:validator试试了吗?是的,首先,我用了f:validator标签。
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

@FacesValidator(value="sheetEnFirme")
public class SheetEnFirmeValidator implements Validator{
    public void validate(FacesContext fc, UIComponent comp, Object obj)
            throws ValidatorException {
        throw new ValidatorException(new FacesMessage("Error"));
    }
}