2012-10-09 17 views
0

在我的web應用程序,我有以下數據表:更新一個動態生成的selectOneMenu用於

<!-- Exibição da lista de públicos --> 
       <p:dataTable id="dtEventos" 
          value="#{relatoriosBean.listaEventos}" 
          paginator="true" rows="5" 
          rowsPerPageTemplate="5,10" 
          paginatorPosition="bottom" 
          paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
          var="atual" 
          emptyMessage="Não há eventos para exibição" 
          rendered="#{relatoriosBean.exibirPainelDados}"> 

        <f:facet name="header"> 
         Eventos 
        </f:facet> 

        <p:column sortBy="#{atual.nmeEvento}" styleClass="wrap"> 
         <f:facet name="header"> 
          Nome 
         </f:facet> 
         <p:panelGrid columns="1" 
            styleClass="gridNoLine"> 
          <h:outputLabel id="olViewNomeEvento" 
              value="#{atual.nmeEvento}" 
              styleClass="t2"/> 
          <p:separator title="Descrição do evento"/> 
          <p:row> 
           <h:outputLabel value="Início: " styleClass="t2"/> 
           <h:outputLabel value="#{atual.dtaInicioEvento}"/> 
           <h:outputLabel value="Término: " styleClass="t2"/> 
           <h:outputLabel value="#{atual.dtaTerminoEvento}"/> 
          </p:row> 
          <h:outputLabel value="#{atual.dscEvento}" 
              styleClass="wrap"/> 
         </p:panelGrid> 
        </p:column> 
        <p:column> 
         <f:facet name="header"> 
          Relatórios 
         </f:facet> 
         <p:panelGrid columns="2" styleClass="gridNoLine"> 
          <p:selectOneMenu value="#{relatoriosBean.tipoEventoRelatorioSelecionado}" 
              required="true" 
              requiredMessage="Selecione o relatório a ser gerado." 
              effect="fade"> 
           <f:selectItem itemLabel="Selecione um item..." itemValue=""/> 
           <f:selectItems value="#{relatoriosBean.tiposEventoRelatorios}"> 
           </f:selectItems> 
          </p:selectOneMenu> 
          <p:commandButton icon="ui-icon-document" 
              title="Gerar relatório" 
              actionListener="#{relatoriosBean.gerarRelatorio}" 
              update="UPDATE THE SELECTONEMENU OF THE LINE"> 
           <f:setPropertyActionListener value="#{atual.idtEvento}" 
                  target="#{relatoriosBean.idEventoSelecionado}}"/> 
          </p:commandButton> 
         </p:panelGrid> 
        </p:column> 
       </p:dataTable> 

正如你可以看到,裏面的數據表列的一個我有一個selectOneMenu用於。在同一列中,我有一個設置了actionListener的按鈕。那麼,我想要的是:根據commandButton的點擊更新列的selectOneMenu。有一種方法可以做到這一點?

好的!現在f:setPropertyActionListener沒有設置屬性eventoSelecionado。以下是代碼:

<p:dataTable value="#{relatoriosBean.listaEventos}" 
          var="atual"> 
        ... 

        <p:column> 
         <f:facet name="header"> 
          Relatórios 
         </f:facet> 
         <p:panelGrid columns="2" 
            styleClass="gridNoLine"> 
          <p:selectOneMenu id="somRelatorios" 
              value="#{relatoriosBean.relatorioSelecionado}" 
              required="true" 
              requiredMessage="Selecione o relatório a ser gerado." 
              effect="fade"> 
           <f:selectItem itemLabel="Selecione um item..." itemValue=""/> 
           <f:selectItems value="#{relatoriosBean.relatorios}"> 
           </f:selectItems> 
          </p:selectOneMenu> 
          <p:commandButton id="cbGerarRelatorio" 
              icon="ui-icon-document" 
              title="Gerar relatório" 
              actionListener="#{relatoriosBean.gerarRelatorio}" 
              update=":frmRelatorios:opPainelDados" 
              process="@this somRelatorios" 
              immediate="true"> 
           <f:setPropertyActionListener target="#{relatoriosBean.eventoSelecionado}" 
                  value="#{atual}"/> 
          </p:commandButton> 
         </p:panelGrid> 
        </p:column> 
       </p:dataTable> 

在gerarRelatorio操作偵聽器中,屬性eventoSelecionado正在以null方式提供。哪裏不對?

回答

1

當然,這id=mySelectOne添加到您的<p:selectOneMenu/>並在您<p:commandButton/>設置update屬性update="mySelectOne"。但爲了在這個ajax更新上獲得最佳結果,我強烈建議你將你的管理bean註釋設置爲@ViewScoped,如果你還沒有這樣做的話。你的命令按鈕應該看起來像這樣在更新結束

 <p:commandButton icon="ui-icon-document" 
             title="Gerar relatório" 
             actionListener="#{relatoriosBean.gerarRelatorio}" 
             update="mySelectOne"> 
+0

你能看到我的答案在下面? –

+0

@ mnatan.brito當然可以,但從技術上講它是一個問題,所以你可能應該刪除它並重新發布爲一個單獨的問題 – kolossus