ここに私の .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になるため....