1

我是 jsf 的新手,我正在使用 Richfaces 编写我的第一个应用程序。我在使用 ajax 标记时遇到问题,该标记用于在服务器上更新 Rich:calendar 组件的关联托管 bean 属性。这是代码:

<rich:panel header="Computing Options">
            <h4>Time Interval</h4>
            <h:panelGrid columns="4" width="100%">
                <h:outputText value="From" />
                <rich:calendar id="intervalFrom" value="#{scenarioEditor.intervalFrom}" popup="true" showApplyButton="true" datePattern="yyy-MM-ddTHH:mm">
                    <a4j:ajax execute="@this" event="change" render="outFrom" />
                </rich:calendar>
                <h:outputText value="To" />
                <rich:calendar id="intervalTo" value="#{scenarioEditor.intervalTo}" popup="true" showApplyButton="true" datePattern="yyy-MM-ddTHH:mm">
                    <a4j:ajax execute="@this" event="change" render="outTo" />
                </rich:calendar>
                <h:outputText id="outFrom" value="From: #{scenarioEditor.intervalFrom}" />
                <h:outputText id="outTo" value="To: #{scenarioEditor.intervalTo}" />
            </h:panelGrid>
            <h4>Algorithms</h4>
            <h:panelGrid columns="2"> 
                <h:selectBooleanCheckbox value="#{scenarioEditor.visibilityClashes}" id="clash" >
                    <f:ajax execute="@this"/>
                </h:selectBooleanCheckbox>
                <h:outputLabel value="Visibility Clashes Evaluator" for="clash" style="width:170px" />
                <h:selectBooleanCheckbox value="#{scenarioEditor.xBandInterference}" id="xband" >
                    <f:ajax execute="@this"/>
                </h:selectBooleanCheckbox>
                <h:outputLabel value="X-Band Interferences Evaluator" for="xband" style="width:170px"/>
            </h:panelGrid>
        </rich:panel>

复选框工作正常,但日历不能。为什么?我试过 f:ajax 和 a4j:ajax 都没有运气。

为了更好地澄清,我希望在用户完成将值输入日历后,立即发出一个调用关联属性的 setter 方法的 ajax 请求。而且,对于日历不会发生,而对于复选框,它会发生。

4

1 回答 1

0

ajax 事件失败,因为T indatePattern="yyy-MM-ddTHH:mm"不是有效的日期格式模式。如果您将<rich:messages/>组件添加到您的字段,您会看到每个 ajax 请求都发生转换错误。删除T,你会没事的

于 2013-10-24T05:46:46.723 回答