这是我的 .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!"));
}
}
对于我的验证器,我需要第二个值。在这里我需要mitarbeiter.id
! for component.getAttributes().get("foo")
我总是为空......
我认为OP不再对这个问题感兴趣,但是如果其他人发现这个问题:
int id=(Integer) component.getAttributes().get("foo");
当你得到一个字符串时将不起作用。有点奇怪,你写的总是为空。您应该得到:
java.lang.String cannot be cast to java.lang.Integer
如果是这种情况,请尝试:
int id = Integer.parseInt((String) component.getAttributes().get("foo"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)