开发者

Trying to understand why h:commandLink submits through validation and a4j:commandLink doesn't

First of all, i'm using Jsf 1.2...

I have a problem with submitting some values in a form to validation. Specifically this code segement:

<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>

Which looks like this in the html page:

Trying to understand why h:commandLink submits through validation and a4j:commandLink doesn't

Whenever I press the submit link, the page doesn't really go through validation, it seems to go with the last successull values instead. The result being that, if the phone number field is left empty, it does nothing and doesn't even render the <h:message> tag.

Actually, I have a workaround fix that looks like this:

<h:commandLink value="#{msg.Submit_Button}">
    <a4j:support event="onclick" reRender="pinCodeDeliveryMsgText, pinCodeDeliveryMsg, pinCodeDeliveryFailedMsg, pinCodeDeliveryMainPanel, LastP开发者_如何学JAVAinCodeMsg, SendingSMSMSG"
    action="#{general.submit}"/>
</h:commandLink>

But i'm really curious to know what's the difference between a4j:commandLink and h:commandLink that makes one woirk and the other not.

TnX


Have you tried to set the process attribute of a4j:commandLink to the id of the inputText? Looks like you are just triggering rerendering of some components, so no model update is performed at all.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜