2011-01-06 10 views
2

私は2つの日付フィールドselectOneMenuとボタンwhithシンプルな研究ルーチン構築しています:これらのSeamフィールド値がバインドされないのはなぜですか?

<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> 

をそして私は値を取得し、実行する方法のpesquisaAbastecimentosを取得する必要がありSeamコンポーネントを持っています。

@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; 
    } 

このメソッドは正しく実行されますが、フィールドの値は決して入力されません。私は縫い目が比較的新しいので、なぜこれらの欄が縫い目の枠組みで正しく塗りつぶされていないのか分かりません。値は実際にはnullであり、ボタンが押されてメソッドが呼び出されると0になります。すべての手がかりは?

txです。 [] S

答えて

4

変更

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

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

そのが働いていない理由<s:button>は、HTTP GETを実行し、フォームをPOSTしていないためである

します。

動作しない場合は、intIntegerに変更する必要があります。

+0

よろしくお願いいたします。 –

関連する問題