2011-01-06 5 views
2

ich eine einfache Forschung Routine bin Gebäude whith 2 Datum ein selectOneMenu und eine Schaltfläche Felder:Warum sind diese Seam-Feldwerte nicht bindend?

<h:form id="pesquisaAbastecimentoForm"> 
<table> 
    <tr> 
     <td> 
      <s:decorate id="dataInicialField" template="../layout/edit.xhtml"> 
       <ui:define name="label" id="labelDataInicial">Data Inicial</ui:define> 
       <rich:calendar id="dataInicial" value="#{abastecimentoAction.dataInicialPesquisa}" 
        datePattern="dd/MM/yyyy HH:mm" /> 
      </s:decorate> 
      <s:decorate id="dataFinalField" template="../layout/edit.xhtml"> 
       <ui:define name="label" id="labalDataFinal">Data Final</ui:define> 
       <rich:calendar id="dataFinal" value="#{abastecimentoAction.dataFinalPesquisa}" 
        datePattern="dd/MM/yyyy HH:mm" /> 
      </s:decorate>       
     </td> 
     <td> 
      <s:decorate id="carroField" template="../layout/edit.xhtml"> 
       <ui:define name="label">Carro</ui:define> 
       <h:selectOneMenu value="#{abastecimentoAction.idCarroPesquisa}" required="false"> 
        <s:selectItems var="carro" value="#{carroList.resultList}" label="#{carro.nome}" itemValue="#{carro.id}" /> 
       </h:selectOneMenu> 
      </s:decorate> 
      <s:div styleClass="actionButtons"> 
       <s:button action="#{abastecimentoAction.pesquisaAbasatecimentos}" id="pesquisaAbastecimentos" value="Pesquisar Abastecimento"> 
       </s:button> 
      </s:div> 
     </td> 
    </tr> 
</table> 
</h:form> 

Und ich eine Naht Komponente haben, die die Werte erhalten sollten und die Methode pesquisaAbastecimentos ausgeführt erhalten.

@Name("abastecimentoAction") 
@Scope(ScopeType.CONVERSATION) 
public class AbastecimentoAction implements Serializable { 

    private static final long serialVersionUID = -2008939547568730028L; 

    @Logger 
    Log log; 

    @In 
    EntityManager entityManager; 

    @In 
    User user; 

    //variáveis para pesquisa do abastecimento 
    private Date dataInicialPesquisa; 
    private Date dataFinalPesquisa; 
    private int idCarroPesquisa; 

    @DataModel 
    List<AbastecimentoMensal> listaAbastecimentoMensal; 

    @SuppressWarnings("unchecked") 
    @Create 
    public void pesquisaAbasatecimentos() { ... } 

public Date getDataInicialPesquisa() { 
     return dataInicialPesquisa; 
    } 

    public void setDataInicialPesquisa(Date dataInicialPesquisa) { 
     this.dataInicialPesquisa = dataInicialPesquisa; 
    } 

    public Date getDataFinalPesquisa() { 
     return dataFinalPesquisa; 
    } 

    public void setDataFinalPesquisa(Date dataFinalPesquisa) { 
     this.dataFinalPesquisa = dataFinalPesquisa; 
    } 

    public int getIdCarroPesquisa() { 
     return idCarroPesquisa; 
    } 

    public void setIdCarroPesquisa(int idCarroPesquisa) { 
     this.idCarroPesquisa = idCarroPesquisa; 
    } 

Die Methode wird korrekt ausgeführt, aber die Werte für die Felder werden nie ausgefüllt. Da ich relativ neu in der Naht bin, konnte ich nicht herausfinden, warum diese Felder nicht korrekt durch das Nahtsystem ausgefüllt werden. Die Werte sind tatsächlich null und 0, wenn die Schaltfläche gedrückt wird und die Methode aufgerufen wird. Irgendwelche Hinweise?

Tx im Voraus. [] s

Antwort

4

ändern

<s:button action="#{abastecimentoAction.pesquisaAbasatecimentos}" id="pesquisaAbastecimentos" value="Pesquisar Abastecimento"> 
      </s:button> 

zu

<h:commandButton action="#{abastecimentoAction.pesquisaAbasatecimentos}" id="pesquisaAbastecimentos" value="Pesquisar Abastecimento"> 
      </h:commandButton> 

Der Grund seiner nicht funktioniert, weil <s:button> eine HTTP-GET führt, und das Formular nicht POST.

Sie sollten auch int zu Integer ändern, wenn es nicht funktioniert.

+0

Gern geschehen. –

Verwandte Themen