我正在使用带有Primefaces 4.0和Primefaces Extensions 1.2.1的JSF 2.0进行项目。 我有一个带有p:autoComplete组件的JSF页面,定义如下:
<p:autoComplete id="autoSocieta" var="company"
size="30"
itemValue="#{company}"
itemLabel="#{company.description}"
completeMethod="#{autoCompleteCompanyBean.complete}"
value="#{editVertenzaRecuperoBean.elemento.company}"
converter="#{companyConverter}" minQueryLength="2" forceSelection="true"
validator="#{editVertenzaRecuperoBean.validateCompany}"
required="true"/>`
自动填充字段采用用户选择的公司的描述。我的问题是,当验证失败时,字段的内容被设置为公司的ID。例如,如果用户选择公司“SAP A.G.” (具有ID“SA00”)然后validateCompany方法抛出ValidatorException,该字段的内容将设置为“SA00”。
这是验证方法:
public void validateCompany(FacesContext ctx, UIComponent cmp, Object o) {
List<VertenzaRecupero> schedeRecupero = getVertenzaMainBean().getVertenza().getVertenzaRecuperi();
if (schedeRecupero == null) {
return;
}
for (VertenzaRecupero schedaRecupero : schedeRecupero) {
if (schedaRecupero.getMemoryAddress().equals(getElemento().getMemoryAddress())) {
continue;
}
if (schedaRecupero.getCompany().equals((Company) o)) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Company already used.", "");
throw new ValidatorException(msg);
}
}
}
有没有办法避免这种情况?
感谢。