0

当我在 dataTable 的字段中使用 f: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>

我的课:包es.axpo.jsf.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"));
    }
}
4

2 回答 2

2

确保#{contrato}bean 至少为@ViewScoped. 确保您没有plantillaPrograma在其 getter 方法中进行准备,而是在 bean 的(post)构造函数中进行准备。确保dateConverter没有抛出ConverterException您应该<h:message(s)>在服务器日志中或服务器日志中看到的面孔消息。

顺便说一句,你为什么不只使用内置<f:convertDateTime>日期?

于 2012-04-24T15:58:29.740 回答
0

解决了。

我的问题出在命令按钮上,我有属性 process="@this",删除后,验证工作正常

于 2012-04-25T11:19:23.997 回答