【问题标题】:How to retrieve Primefaces autocomplete pogo selected item in backing bean如何在支持 bean 中检索 Primefaces 自动完成 pogo 选定项目
【发布时间】:2013-01-14 15:31:20
【问题描述】:

我正在尝试学习 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 文件中添加了转换器。

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    您似乎将集合绑定到自动完成的值。

    <p:autoComplete value="#{autoCompleteBean.selectedPlayers}"/>
    

    但是您应该将单个实例绑定到 value 属性。

    private Player selectedPlayer;
    
    // getter and setter
    
    <p:autoComplete value="#{autoCompleteBean.selectedPlayer}"/>
    

    在提交按钮调用的方法中,您可以通过this.selectedPlayer 轻松访问它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2021-10-25
      • 2013-01-05
      相关资源
      最近更新 更多