2

ここに私の .xhtml ページの一部:

<h:inputText id="kartNumIn"  value="#{controller.mitarbeiter.kartenNummer}">
                <f:attribute name="foo" value="controller.mitarbeiter.id" />
                <f:validator validatorId="kartVal" binding="#{kartVal}" disabled="#{!controller.noUpdate}"/>
            </h:inputText>

ここに私の検証方法():

@Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {

        int id=(Integer) component.getAttributes().get("foo"); //always 0
        int temp = (Integer) value;

        if (!(value instanceof Integer)) {
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Eingabefehler", "FEHLER:Bitte geben Sie eine Zahl ein!"));
        }

       System.out.print("Input"+value+"Aktuelle"+component.getAttributes().get("foo").toString());

        if (getAlleKartennummern().contains(temp) && temp!=id) {
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Kartennummerfehler", "FEHLER:Kartennumer bereits vergeben!"));
        }
    }

私のバリデーターには、2 番目の値が必要です。ここで私は必要mitarbeiter.idです!component.getAttributes().get("foo")私は常にnullになるため....

4

2 に答える 2

2

属性では、式の値を設定する必要があります

<f:attribute name="foo" value="controller.mitarbeiter.id" />

そのはず

<f:attribute name="foo" value="#{controller.mitarbeiter.id}" />
于 2012-12-18T14:01:02.090 に答える