获得丰富的自动完成价值

时间:2013-03-09 14:37:24

标签: java-ee jsf-2 richfaces

我正在尝试实现richfaces dataTable。 每行都有一个richfaces日历,两个richfaces自动完成,以及3个输入文本。

我有另一种形式的命令按钮。 当我在数据表的给定行中输入一些值时:

  • 显示有效日期
  • 这两个autocpmpletes可以很好地从bean中检索数据选择
  • 我在输入文本中输入值

但是当我点击“计算”按钮时 只有文本输入被发送回辅助bean。

到目前为止,我提出的是(这是我的xhtml文件的简化版本)

<h:body>
    <rich:panel>
                <h:form id="legForm">
                    <rich:dataTable value="#{bean.legsForDisplay}" var="legForDisplay">
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="Departure Date (UTC)" />
                            </f:facet>
                            <rich:calendar value="#{legForDisplay.departureTime}"
                                locale="#{bean.locale}" popup="true"
                                datePattern="#{legForDisplay.datePattern}"
                                converter="dateConverter" inputStyle="width:80px">
                                <f:ajax event="change" execute="@this"/>
                            </rich:calendar>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="ETD (HHmm)" />
                            </f:facet>
                            <h:inputText value="#{legForDisplay.etd}" style="width : 30px;">
                                <f:ajax event="change" execute="@this"/>
                            </h:inputText>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="ADEP" />
                            </f:facet>
                            <rich:autocomplete mode="cachedAjax" minChars="2"
                                autocompleteMethod="#{bean.autocomplete}"
                                autofill="false" value="#{legForDisplay.adep}">
                                <f:ajax event="change" execute="@this"/>
                            </rich:autocomplete>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="ADES" />
                            </f:facet>
                            <rich:autocomplete mode="cachedAjax" minChars="2"
                                autocompleteMethod="#{bean.autocomplete}"
                                autofill="false" value="#{legForDisplay.ades}">
                                <f:ajax event="change" execute="@this"/>
                            </rich:autocomplete>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="Male Pax" />
                            </f:facet>
                            <h:inputText value="#{legForDisplay.malePax}">
                                <f:ajax />
                            </h:inputText>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="Female Pax" />
                            </f:facet>
                            <h:inputText value="#{legForDisplay.femalePax}">
                                <f:ajax />
                            </h:inputText>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="Child Pax" />
                            </f:facet>
                            <h:inputText value="#{legForDisplay.childPax}">
                                <f:ajax />
                            </h:inputText>
                        </rich:column>
                    </rich:dataTable>
                </h:form>
    </rich:panel>
    <rich:panel>
        <h:form>
            <a4j:commandButton value="Compute Mission"
                action="#{bean.doStuff}"
                render="@form">
            </a4j:commandButton>
        </h:form>
    </rich:panel>
</h:body>

如何将日历/自动完成组件中的值设置为legForDisplay列表中相应的legsForDisplay元素?

我试图阅读有关该主题的所有相关问题,但找不到这个问题的解决方案,这看起来很基本......

感谢

编辑:

如果在富数据表中放置一个虚拟提交按钮,一切正常。我可以按下这个虚拟按钮,然后“计算任务”和值已经存储在bean中。

<a4j:commandButton value="Submit"
    action="#{missionHandler.dummySubmit}" limitRender="true"
    render="legTable">
</a4j:commandButton>

我担心的是,我想从另一个面板中的“计算任务”按钮提交另一种形式,而不是先点击“虚拟按钮”。

1 个答案:

答案 0 :(得分:0)

尝试在没有BIG形式的情况下使用它:

<a4j:commandButton value="Submit" execute="legForm"
   action="#{missionHandler.dummySubmit}" limitRender="true"
  render="legTable">
</a4j:commandButton>