没有转换器,JSF SelectOneMenu无法正常工作吗?

时间:2018-10-09 08:14:27

标签: jsf primefaces jsf-2 xhtml converters

所以我有以下xhtml代码:

<p:cellEditor>
        <f:facet name="output">
                    <h:outputText value="#{interview.interviewer.name}" />
                </f:facet>
                <f:facet name="input">
                    <p:selectOneMenu value="#{interview.interviewer}" style="width:100%" converter="interviewerConverter">
                        <f:selectItems value="#{interviewerController.allInterviewers}" var="s" itemLabel="#{s.name}" itemValue="#{s}" />
                    </p:selectOneMenu>
        </f:facet>
</p:cellEditor>

当我尝试编辑单元格中的数据时,出现以下错误:

Conversion Error setting value 'com.jpa.entities.Interviewer@288002c2' for 'null Converter'.

我看了类似的帖子,但没有发现这里出了什么问题。

我还创建了以下转换器,由此我没有收到转换器错误

@FacesConverter("interviewerConverter")
public class InterviewerConverter implements Converter {

public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
    if(value != null && value.trim().length() > 0) {
        try {
            InterviewerController service = (InterviewerController) fc.getExternalContext().getApplicationMap().get("interviewerController");
            return service.getallInterviewers().get(Integer.parseInt(value));
        } catch(NumberFormatException e) {
            throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid"));
        }
    }
    else {
        return null;
    }
}

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

实现转换器后,在以下列表中得到NullPointerException:(service.getallInterviewers())

 return service.getallInterviewers().get(Integer.parseInt(value));

但是在控制器中,列表是这样初始化的:

@PostConstruct
public void init(){
    initAllInterviewers();
}

这有什么问题吗?

0 个答案:

没有答案