所以我有以下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();
}
这有什么问题吗?