【问题标题】:Why are these Seam field values not binding?为什么这些 Seam 字段值不具有约束力?
【发布时间】:2011-06-04 18:52:15
【问题描述】:

我正在构建一个简单的研究例程,其中包含 2 个日期字段、一个 selectOneMenu 和一个按钮:

<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。有什么线索吗?

提前发送。 []秒

【问题讨论】:

    标签: xhtml jboss seam


    【解决方案1】:

    改变

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

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

    它不工作的原因是因为&lt;s:button&gt; 执行 HTTP GET,并且不发布您的表单。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-23
      • 2014-05-24
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多