Primefaces:自动完成功能无法正确处理验证错误

时间:2015-03-24 18:02:55

标签: jsf jsf-2 primefaces

我正在使用带有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);
        }
    }       
}  

有没有办法避免这种情况?

感谢。

0 个答案:

没有答案