Ajax无法在带有转换器的primefaces selectManyCheckbox上运行

时间:2019-03-05 08:19:04

标签: ajax primefaces jsf-2 converters selectmanycheckbox

我试图将素数selectManyCheckBox与Ajax和Converter一起使用,但Ajax没有被触发。如果我不使用转换器,则可以触发Ajax。我的转换器有问题吗?

<div class="form-group">
    <p:outputLabel value="Atur Grade Pinjaman" for="gradePinjaman"/>        
    <p:selectManyCheckbox id="gradePinjaman" value="#{autoInvestController.param.grades}" converter="companyGradeConverter">
        <f:selectItems value="#{autoInvestController.grades}" var="grade" itemLabel="#{grade.id}" itemValue="#{grade}"/>                        
        <p:ajax update="selectAll estimation" listener="#{autoInvestController.valueChange}"/>
    </p:selectManyCheckbox>                
    <p:message for="gradePinjaman"/>
</div>

这是我的支持bean代码

public void valueChange() {     
    if (param.getGrades() != null && !param.getGrades().isEmpty()) {
        checkAll = param.getGrades().size() == grades.size();
        calculateCollectEstimation();
    }
}

这是我的转换器

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {        
    if (Strings.isNullOrEmpty(value)) {
        return null;
    } else {
        try {
            PlatformService platformService = (PlatformService) CDI.current().select(PlatformService.class).get();
            Map<String, Object> param = new HashMap<>();
            param.put("id", value);
            CompanyGradeResponse companyGrade = platformService.getCompanyGrade(param).get(0);                
            return companyGrade;
        } catch (EndpointException e) {
            LOG.error(e.getMessage(), e);
            return null;
        }            
    }
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {        
    if (value != null) {
        return ((CompanyGradeResponse) value).getId();
    } else {
        return null;
    }
}

我认为我的转换器运行良好,但是为什么当我选中复选框时AJAX不会被触发?

谢谢

0 个答案:

没有答案