验证inputText不在表单标记中

时间:2013-12-06 17:12:22

标签: jsf-2 richfaces authorize.net

我正在创建一个将数据发布到外部网址(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>

2 个答案:

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

过程是:

  1. 用户在JSF表单中输入卡号,然后单击Submit以开始通过AJAX请求进行验证。
  2. 如果没有验证错误,请将卡号从x_card_num输入复制到postInput,然后使用JavaScript提交postForm