【问题标题】:Trying to understand why h:commandLink submits through validation and a4j:commandLink doesn't试图理解为什么 h:commandLink 通过验证提交而 a4j:commandLink 没有
【发布时间】:2011-03-15 13:36:47
【问题描述】:

首先,我使用的是 Jsf 1.2...

我在提交表单中的某些值以进行验证时遇到问题。 特别是这个代码段:

<h:panelGrid columns="4" id="StatusPanel">
    <h:outputText value="#{msg.Phone_number_to_send_SMS_to}" />
    <h:inputText id="phoneNumber" value="#{general.smsPhoneNumber}" required="true"
        requiredMessage="Please enter a valid phone number." />
    <a4j:commandLink value="#{msg.Submit_Button}"
        reRender="pinCodeDeliveryMsgText, pinCodeDeliveryMsg, pinCodeDeliveryFailedMsg, pinCodeDeliveryMainPanel, LastPinCodeMsg, SendingSMSMSG"
        action="#{general.submit}" />
        <h:message for="phoneNumber" fatalClass="mandatoryFieldMissing" errorClass="mandatoryFieldMissing" tooltip="true" />
</h:panelGrid>

在 html 页面中如下所示:

每当我按下提交链接时,页面并没有真正通过验证,它似乎与最后一个成功的值一起去。结果是,如果电话号码字段为空,它什么也不做,甚至不呈现&lt;h:message&gt; 标签。

实际上,我有一个看起来像这样的解决方法:

<h:commandLink value="#{msg.Submit_Button}">
    <a4j:support event="onclick" reRender="pinCodeDeliveryMsgText, pinCodeDeliveryMsg, pinCodeDeliveryFailedMsg, pinCodeDeliveryMainPanel, LastPinCodeMsg, SendingSMSMSG"
    action="#{general.submit}"/>
</h:commandLink>

但我真的很想知道a4j:commandLink 和h:commandLink 之间的区别是什么让一个woirk 而另一个不是。

TnX

【问题讨论】:

    标签: jsf


    【解决方案1】:

    你有没有试过将a4j:commandLink的process属性设置为inputText的id?看起来您只是触发了某些组件的重新渲染,因此根本没有执行模型更新。

    【讨论】:

    • 我真的必须明确写出我想要验证的每个组件的 id 吗?似乎是错误的做法..
    • 这正是重点。 :-) 对于异步请求,您必须明确定义应处理哪些组件(包括验证)以及仅应重新呈现哪些组件。如果要处理和呈现页面上的所有内容,请使用回发。此处简要介绍该概念:docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html_single/…
    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 2011-06-28
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多