2011-01-06 8 views
2

간단한 연구 루틴 whith 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> 

그리고 값을 가져오고 메서드 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 사전에. [] 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> 

ITS의가 작동하지 않는 이유 <s:button>는 HTTP는 GET 수행하고 양식을 게시하지 않기 때문이다

합니다.

작동하지 않는 경우 intInteger으로 변경해야합니다.

+0

여러분을 환영합니다. –

관련 문제