我正在尝试学习 Primfaces。我目前正在使用自动完成控件(使用 Pojo)。显示器工作正常。我一直在努力的是检索选定的对象并访问它的任何属性。每当我尝试访问 bean 中选定对象的属性时,都会收到 nullPointerException。任何人都可以帮我解决这个问题(请)?我的代码基于 Primefaces 的简单 pojo 示例:(http://www.primefaces.org/showcase-labs/ui/autoCompletePojo.jsf)。我的网页如下所示:
<h:form id="form">
<p:growl id="msg" showDetail="false"/>
<p:panel header="Test Form" toggleable="true">
<h:outputLabel value="Player(s): " for="basicPojo" />
<p:autoComplete value="#{autoCompleteBean.selectedPlayers}"
id="basicPojo" completeMethod="#{autoCompleteBean.completePlayer}"
var="p" itemLabel="#{p.name}" itemValue="#{p}" converter="player" forceSelection="true" multiple="true">
<p:ajax event="itemUnselect" listener="#{autoCompleteBean.handleUnselect}" />
<f:facet name="itemtip">
<h:panelGrid columns="2" cellpadding="5">
<h:outputText value="eScholarId: " />
<h:outputText id="id-output" value="#{p.name}" />
<h:outputText value="Name: " />
<h:outputText id="name-output" value="#{p.number}" />
<h:outputText value="Email: " />
<h:outputText id="email-output" value="#{p.position}"/>
</h:panelGrid>
</f:facet>
</p:autoComplete>
<p:commandButton value="Submit" update="msg" action="#{autoCompleteBean.doMessage}"></p:commandButton>
</p:panel>
我编辑了 Primefaces autoCompleteBean 以添加以下方法:
public void doMessage(){
String txt = "dummy text";
txt = this.selectedPlayers.get(0).getName();
FacesMessage msg = new FacesMessage(txt);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
我已经像往常一样在 faces.config 文件中添加了转换器。