2011-01-06 82 views
2

我建立一个简单的研究例行蒙山2日期字段selectOneMenu用于和一个按钮:为什么这些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> 

而且我有一个Seam组件,他们应该得到的值,并得到执行的方法pesquisaAbastecimentos。

@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提前。 []中

回答

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,不发表您的形式。

如果不起作用,您还应该将int更改为Integer

+0

不客气。 – 2011-01-07 21:39:43