绑定问题与h:inputText在rich:datatable中

时间:2016-08-15 20:30:50

标签: jsf binding datatable richfaces

在点击保存按钮后,我很难在托管bean中获取更新值。我可以毫不费力地填充主行和详细行,但h:inputText字段中的值永远不会返回到bean。有什么想法吗?

XHTML:

<rich:popupPanel>
    <h:form id="formTesteJarra">

        <rich:toolbar height="30" itemSeparator="grid">
            <rich:toolbarGroup>
                <a4j:commandButton id="testejarra_ico_first" execute="@this"
                    image="/resources/images/ico_first.gif"
                    actionListener="#{testeJarra.tmp()}">
                    <rich:tooltip target="testejarra_ico_first"
                        value="#{msgs.pri_dia_mes}" />
                </a4j:commandButton>
                <a4j:commandButton id="testejarra_ico_previous" execute="@this"
                    image="/resources/images/ico_previous.gif"
                    actionListener="#{testeJarra.tmp()}">
                    <rich:tooltip target="testejarra_ico_previous"
                        value="#{msgs.volt_um_dia}" />
                </a4j:commandButton>
                <rich:calendar id="testejarra_data_sele" datePattern="dd/MM/yyyy"
                    firstWeekDay="0" showWeeksBar="false" cellWidth="20px"
                    cellHeight="20px" style="width:100px" value="">
                    <rich:tooltip target="testejarra_data_sele"
                        value="#{msgs.ir_data_sele}" />
                </rich:calendar>
                <a4j:commandButton id="testejarra_ico_confirm" execute="@this"
                    image="/resources/images/ico_confirm.gif"
                    actionListener="#{testeJarra.tmp()}">
                    <rich:tooltip target="testejarra_ico_confirm"
                        value="#{msgs.data_sele}" />
                </a4j:commandButton>
                <a4j:commandButton id="testejarra_ico_next" execute="@this"
                    image="/resources/images/ico_next.gif"
                    actionListener="#{testeJarra.tmp()}">
                    <rich:tooltip target="testejarra_ico_next"
                        value="#{msgs.avan_um_dia}" />
                </a4j:commandButton>
                <a4j:commandButton id="testejarra_ico_last" execute="@this"
                    image="/resources/images/ico_last.gif"
                    actionListener="#{testeJarra.tmp()}">
                    <rich:tooltip target="testejarra_ico_last"
                        value="#{msgs.ir_ult_dia_mes}" />
                </a4j:commandButton>
            </rich:toolbarGroup>
            <rich:toolbarGroup>
                <a4j:commandButton id="testejarra_btnSalvar" execute="@form"
                    immediate="true" enabled="#{testeJarra.salvarEnabled()}"
                    image="#{testeJarra.salvarEnabled()? '/resources/images/ico_salvar.png' : '/resources/images/ico_salvar_disable.png'}"
                    actionListener="#{testeJarra.salvar()}"
                    oncomplete="#{rich:component('popUpTesteJarra')}.hide(); return true;">
                    <rich:tooltip target="testejarra_btnSalvar"
                        value="#{msgs.salvar}" />
                </a4j:commandButton>
            </rich:toolbarGroup>
        </rich:toolbar>

        <br />

        <rich:dataTable id="testesTable" value="#{testeJarra.testes}"
            binding="#{testeJarra.binding}" var="teste" rows="1"
            cellpadding="0" cellspacing="0" style="width:100%">

            <f:facet name="header">
                <rich:columnGroup>
                    <rich:column colspan="10">
                        <h:outputText value="ÁGUA BRUTA" />
                    </rich:column>
                    <rich:column breakRowBefore="true" colspan="2">
                        <h:outputText value="Operador" />
                    </rich:column>
                    <rich:column>
                        <h:outputText value="Horário" />
                    </rich:column>
                    <rich:column>
                        <h:outputText value="Cor" />
                    </rich:column>
                    <rich:column>
                        <h:outputText value="Turbidez" />
                    </rich:column>
                    <rich:column>
                        <h:outputText value="Alcalinidade" />
                    </rich:column>
                    <rich:column>
                        <h:outputText value="pH" />
                    </rich:column>
                    <rich:column>
                        <h:outputText value="Temp. da Água" />
                    </rich:column>
                    <rich:column>
                        <h:outputText value="Temp. Ar" />
                    </rich:column>
                    <rich:column>
                        <h:outputText value="Observações" />
                    </rich:column>
                </rich:columnGroup>
            </f:facet>

            <rich:column colspan="2">
                <div align="center">
                    <h:outputText value="#{teste.usuario.nomeUsuario}" />
                </div>
            </rich:column>

            <rich:column>
                <div align="center">
                    <h:inputText styleClass="hora" size="5"
                        value="#{teste.dataExecucao}">
                        <rich:validator />
                    </h:inputText>
                </div>
            </rich:column>

            <rich:column>
                <div align="center">
                    <h:inputText styleClass="medicao" size="5"
                        value="#{teste.corAgua}">
                        <rich:validator />
                    </h:inputText>
                </div>
            </rich:column>

            <rich:column>
                <div align="center">
                    <h:inputText styleClass="medicao" size="5"
                        value="#{teste.turbidezAgua}">
                        <rich:validator />
                    </h:inputText>
                </div>
            </rich:column>

            <rich:column>
                <div align="center">
                    <h:inputText styleClass="medicao" size="5"
                        value="#{teste.alcalinidadeAgua}">
                        <rich:validator />
                    </h:inputText>
                </div>
            </rich:column>

            <rich:column>
                <div align="center">
                    <h:inputText styleClass="medicao" size="5"
                        value="#{teste.PHAgua}">
                        <rich:validator />
                    </h:inputText>
                </div>
            </rich:column>

            <rich:column>
                <div align="center">
                    <h:inputText styleClass="medicao" size="5"
                        value="#{teste.temperaturaAgua}">
                        <rich:validator />
                    </h:inputText>
                </div>
            </rich:column>

            <rich:column>
                <div align="center">
                    <h:inputText styleClass="medicao" size="5"
                        value="#{teste.temperaturaAr}">
                        <rich:validator />
                    </h:inputText>
                </div>
            </rich:column>

            <rich:column>
                <div align="center">
                    <h:inputText value="#{teste.observacoes}">
                    </h:inputText>
                </div>
            </rich:column>

            <rich:collapsibleSubTable id="amostrasTable"
                value="#{teste.amostras}" var="amostra">

                <f:facet name="header">
                    <rich:columnGroup>

                        <rich:column colspan="10">
                            <div align="center">
                                <h:outputText value="AMOSTRAS" />
                            </div>
                        </rich:column>

                        <rich:column rowspan="2" breakRowBefore="true">
                            <div align="center">
                                <h:outputText value="Jarra" />
                            </div>
                        </rich:column>

                        <rich:column colspan="2">
                            <div align="center">
                                <h:outputText value="Dosagens" />
                            </div>
                        </rich:column>

                        <rich:column colspan="3">
                            <div align="center">
                                <h:outputText value="Floculação" />
                            </div>
                        </rich:column>

                        <rich:column colspan="2">
                            <div align="center">
                                <h:outputText value="Decantação" />
                            </div>
                        </rich:column>

                        <rich:column rowspan="2">
                            <div align="center">
                                <h:outputText value="Método" />
                            </div>
                        </rich:column>

                        <rich:column rowspan="2">
                            <div align="center">
                                <h:outputText value="Redução Turb (%)" />
                            </div>
                        </rich:column>

                        <rich:column breakRowBefore="true">
                            <div align="center">
                                <h:outputText value="Sulfato" />
                            </div>
                        </rich:column>

                        <rich:column>
                            <div align="center">
                                <h:outputText value="Cal" />
                            </div>
                        </rich:column>

                        <rich:column>
                            <div align="center">
                                <h:outputText value="Inicio" />
                            </div>
                        </rich:column>

                        <rich:column>
                            <div align="center">
                                <h:outputText value="Aspecto" />
                            </div>
                        </rich:column>

                        <rich:column>
                            <div align="center">
                                <h:outputText value="pH" />
                            </div>
                        </rich:column>

                        <rich:column>
                            <div align="center">
                                <h:outputText value="Cor" />
                            </div>
                        </rich:column>

                        <rich:column>
                            <div align="center">
                                <h:outputText value="Turbidez" />
                            </div>
                        </rich:column>

                    </rich:columnGroup>
                </f:facet>

                <rich:column>
                    <div align="center">
                        <h:outputText value="#{amostra.numero}" />
                    </div>
                </rich:column>

                <rich:column>
                    <div align="center">
                        <h:inputText styleClass="medicao" size="5"
                            value="#{amostra.sulfato}">
                            <rich:validator />
                        </h:inputText>
                    </div>
                </rich:column>

                <rich:column>
                    <div align="center">
                        <h:inputText styleClass="medicao" size="5"
                            value="#{amostra.cal}">
                            <rich:validator />
                        </h:inputText>
                    </div>
                </rich:column>

                <rich:column>
                    <div align="center">
                        <h:inputText styleClass="hora" size="5"
                            value="#{amostra.duracao}">
                            <rich:validator />
                        </h:inputText>
                    </div>
                </rich:column>

                <rich:column>
                    <div align="center">
                        <h:selectOneMenu value="#{amostra.aspecto.codigo}">
                            <f:selectItem itemLabel="#{msgs.selecionar}"
                                itemValue="#{amostra.aspecto.codigo}" />
                            <f:selectItems value="#{testeJarra.aspectos}" var="item"
                                itemValue="#{item.codigo}" itemLabel="#{item.descricao}" />
                        </h:selectOneMenu>
                    </div>
                </rich:column>

                <rich:column>
                    <div align="center">
                        <h:inputText styleClass="medicao" size="5" value="#{amostra.PH}">
                            <rich:validator />
                        </h:inputText>
                    </div>
                </rich:column>

                <rich:column>
                    <div align="center">
                        <h:inputText styleClass="medicao" size="5"
                            value="#{amostra.cor}">
                            <rich:validator />
                        </h:inputText>
                    </div>
                </rich:column>

                <rich:column>
                    <div align="center">
                        <h:inputText styleClass="medicao" size="5"
                            value="#{amostra.turbidez}">
                            <rich:validator />
                        </h:inputText>
                    </div>
                </rich:column>

                <rich:column>
                    <div align="center">
                        <h:selectOneMenu value="#{amostra.metodo.codigo}">
                            <f:selectItem itemLabel="#{msgs.selecionar}"
                                itemValue="#{amostra.metodo.codigo}" />
                            <f:selectItems value="#{testeJarra.metodos}" var="item"
                                itemValue="#{item.codigo}" itemLabel="#{item.descricao}" />
                        </h:selectOneMenu>
                    </div>
                </rich:column>

                <rich:column>
                    <div align="center">
                        <h:outputText value="#{amostra.reducaoTurbidez}" />
                    </div>
                </rich:column>

            </rich:collapsibleSubTable>

            <f:facet name="footer">
                <rich:column colspan="10">
                    <rich:dataScroller for="testesTable" fastStep="3" />
                </rich:column>
                Registros: #{testeJarra.testes.size()}
           </f:facet>

        </rich:dataTable>
    </h:form>
</rich:popupPanel>

@ViewScoped bean:

@ApplicationPath("/rest")
@ManagedBean(name = "testeJarra")
@ViewScoped
public class TesteJarraBean extends BaseBean implements Serializable {
   private static final long serialVersionUID = -7875922537080530588L;

   private List<TesteJarra> testes;

   // Objetos atualizados pelo usuário na view
   private UIDataTable binding;

   private List<MetodoTesteJarra> metodos;

   @EJB
   private MetodoTesteJarraUC metodoUC;

   public TesteJarraBean() {
   }

   @PostConstruct
   public void init() {
     Calendar cal = Calendar.getInstance();
     testes = testeUC.getAllByDataExecucao(cal.getTime());

     if (testes == null)
        testes = new ArrayList<TesteJarra>();

     TesteJarra teste = new TesteJarra((UnidadeOperacional)    getObjectSession(UNID_OPER),
     (Usuario) getObjectSession(USER), cal.getTime());

     int numeroAmostras = Integer.parseInt(
                    FacesContext.getCurrentInstance().getExternalContext().getInitParameter("NUMERO_AMOSTRAS_TESTE_JARRA"));

     for (int i = 0; i < numeroAmostras; i++) {
        AmostraTesteJarra a = new AmostraTesteJarra(teste);
        teste.adicionarAmostra(a);
     }

     testes.add(0, teste);

     if (metodos == null)
        metodos = metodoUC.getAtivos();
  }

  public void salvar() {
      TesteJarra teste = (TesteJarra) binding.getRowData();
      teste = null;
  }

  public boolean salvarEnabled() {
     return true;
  }

  public void tmp() {
  }

  public Aspecto[] getAspectos() {
     return Aspecto.values();
  }

  public List<TesteJarra> getTestes() {
     return testes;
  }

  public void setTestes(List<TesteJarra> testes) {
     this.testes = testes;
  }

  public List<MetodoTesteJarra> getMetodos() {
     return metodos;
  }

  public void setMetodos(List<MetodoTesteJarra> metodos) {
     this.metodos = metodos;
  }

  public static long getSerialversionuid() {
     return serialVersionUID;
  }

  public UIDataTable getBinding() {
     return binding;
  }

  public void setBinding(UIDataTable binding) {
     this.binding = binding;
  }
}

这就是我需要的:

0 个答案:

没有答案