JSF SelectOneMenu 没有转换器就无法工作?

JSF SelectOneMenu not working without converter?

提问人:jhthewow 提问时间:10/9/2018 最后编辑:jhthewow 更新时间:10/9/2018 访问量:194

问:

所以我有以下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();
}

这里可能有什么问题?

JSF primefaces JSF-2 XHTML 转换器

评论

0赞 Kukeltje 10/9/2018
不使用单元格编辑器/数据表时是否有效?它适用于普通的 jsf 吗?并请发布 jsf 的版本和实现信息h:selectOneMenu
0赞 jhthewow 10/9/2018
创建转换器后,我没有收到转换器错误,但我在列表中(在转换器函数中)收到 NullPointerException。我用细节编辑了这篇文章。
0赞 Kukeltje 10/9/2018
啊,好吧,那么它与PrimeFaces或xhtml无关。请同时添加版本信息。
0赞 Kukeltje 10/9/2018
您确定是应用程序范围吗?interviewerController
0赞 jhthewow 10/9/2018
interviewerController 的 RequestedScoped。您认为它适用于 ApplicationScoped 注释吗?

答: 暂无答案