我正在创建一个将数据发布到外部网址(authorizeNet DPM)的表单。在允许提交发生之前,我需要jsf来验证inputText。如何在这种情况下使验证规则起作用?
<form action="EXTERNAL_URL" method="POST">
<h:inputText id="x_card_num" required="true" requiredMessage="A 16-digit credit card number is required.">
<f:ajax event="change" render="@this" />
<f:validateLength maximum="20" minimum="3" />
<f:validateRegex pattern="[0-9]{16}" />
</h:inputText>
<h:commandButton value="Submit" id="submit"/>
</form>
答案 0 :(得分:1)
JSF在服务器上运行,因此您始终需要首先回发到您自己的服务器。从那里你可以手动对目标服务器发送帖子(服务器到服务器的通信)。您甚至可以捕获该服务器的响应并将其传输到客户端。
您的客户端会看到您服务器的URL,除非目标服务器以重定向进行响应。
答案 1 :(得分:1)
我认为您可能需要将JSF与普通JavaScript混合使用并使用PrimeFaces的<p:commmandButton>
。
<h:form>
<h:inputText id="x_card_num" required="true" requiredMessage="A 16-digit credit card number is required.">
<f:ajax event="change" render="@this" />
<f:validateLength maximum="20" minimum="3" />
<f:validateRegex pattern="[0-9]{16}" />
</h:inputText>
<h:message id="msg" for="x_card_num" />
<p:commandButton value="Submit" process="@this, x_card_num" update="msg"
oncomplete="if (!args.validationFailed) populatePostFormAndSubmit();" />
</h:form>
<form id="postForm" action="EXTERNAL_URL" method="POST">
<input id="postInput" />
</form>
过程是:
Submit
以开始通过AJAX请求进行验证。x_card_num
输入复制到postInput
,然后使用JavaScript提交postForm
。