用于p的JSF转换器:selectOneListbox返回NullPointerException

时间:2017-06-12 11:06:13

标签: jsf primefaces

我尝试为<p:selectOneListbox>实现转换器。该列表应包含child个对象。转换器在我的faces-config.xml中声明。 children的第一个名称将显示在视图的列表中。

问题是我总是通过NullPointerException中的List<Child> children = new ArrayList<>(childService.getAllChildren());ChildConverter获得child。但是我的数据库中有child个对象。为另一个表调用相同的方法并返回<p:selectOneListbox id="childList" value="#{caregiverController.caregiver.child}" converter="childConverter" var="t" filter="true" filterMatchMode="contains"> <f:selectItems value="#{childController.children}" var="child" itemLabel="#{child.firstName}" itemValue="#{child}" /> <p:column> <p:graphicImage name="pictures/tiger.jpg" width="32" height="32" /> </p:column> <p:column> <h:outputText value="#{t.firstName}" /> </p:column> </p:selectOneListbox> 个对象。

我的列表框:

@FacesConverter("childConverter")
public class ChildConverter implements Converter {

public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
    if(value != null && value.trim().length() > 0) {
        try {
            ChildService childService = (ChildService) fc.getExternalContext().getApplicationMap().get("childService");
            List<Child> children = new ArrayList<>(childService.getAllChildren());
            return children.get(Integer.parseInt(value));
        } catch(NumberFormatException e) {
            throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid theme."));
        }
    }
    else {
        return null;
    }
}

public String getAsString(FacesContext fc, UIComponent uic, Object object) {
    if(object != null) {
        return String.valueOf(((Child) object).getId());
    }
    else {
        return null;
    }
}
}

我的转换器:

tags

0 个答案:

没有答案