0

f:validator を dataTable のフィールド内で使用すると機能しません。バリデータ クラスにブレークポイントを挿入すると、実行されません。

私のデータテーブル:

<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>

私のクラス: package 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

Bean#{contrato}が少なくとも@ViewScoped. plantillaProgramagetter メソッドではなく、Bean の (ポスト) コンストラクターで準備していることを確認してください。サーバーのログまたはサーバーのログで、faces メッセージで気付くはずの がdateConverterスローされていないことを確認してください。 ConverterException<h:message(s)>

ところで、<f:convertDateTime>日付にビルトインを使用しないのはなぜですか?

于 2012-04-24T15:58:29.740 に答える
0

解決しました。

私の問題はコマンド ボタンにありました。プロパティ process="@this" がありました。削除すると、検証は正常に機能します。

于 2012-04-25T11:19:23.997 に答える