私はJSFで勉強していません。弱いですから、これはとても新しいものです。私はすでに一つの "問題"を見つけました...まあ、それは実際に大きな問題ではなく、より美容的な問題です。JSFでのフォーム入力のネイティブJavaScriptバリデーション
いくつかの検証タグをユーザーに登録するための基本フォームを作成しました(上記のコードを参照)。すべて正常に動作しますが、JavaScriptを使用してクライアント側のコントロールも使用したいと考えています。私は自分でJavaScriptチェック機能を書くことができることをすでに知っていますが、それは私が望むものではありません。バリデーションタグにバリデーションルールを定義しているので、JSFのような素敵なフレームワークが自動的にこれらの処理を自動で行うことができれば、コードを手作業で書くのは馬鹿だと思うのです。私は、SunがJavaScriptの自動検証をJSFから意図的に削除したことも知っています。
私の質問は次のとおりです。フォーム提出時にJSFが自動的にJavaScript関数(f:validate info)を生成する方法はありますか?また、PrimeFacesを使用していますが、PrimeFacesを使用してこれを実現することは可能ですか?ここで
は私が作ったフォームのコードです:
<h:form>
<table>
<tr>
<th><label for="registration-email">#{usersTexts.email}:</label></th>
<td>
<h:inputText value="#{userRegistry.newUser.email}" id="registration-email" validatorMessage="#{msg.invalidEmail}" maxlength="100">
<f:validateRegex pattern="^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$" />
</h:inputText>
</td>
</tr>
<tr>
<th><label for="registration-name">#{usersTexts.name}:</label></th>
<td>
<h:inputText value="#{userRegistry.newUser.name}" id="registration-name" validatorMessage="#{formsTexts.field} #{usersTexts.name} #{msg.isEmpty}" maxlength="100">
<f:validateRequired />
</h:inputText>
</td>
</tr>
<tr>
<th><label for="registration-password1">#{usersTexts.password}:</label></th>
<td>
<h:inputSecret value="#{userRegistry.newUser.password}" binding="#{password}" id="registration-password1" validatorMessage="#{formsTexts.field} #{usersTexts.password} #{msg.isEmpty}">
<f:validateRequired />
</h:inputSecret>
</td>
</tr>
<tr>
<th><label for="registration-password2">#{usersTexts.passwordAgain}:</label></th>
<td>
<h:inputSecret id="registration-password2" validatorMessage="#{msg.passwordsNotEqual}">
<f:validateLength minimum="#{user.MIN_PASSWORD_LENGTH}" />
<f:validator validatorId="equality" />
<f:attribute name="matchAgainst" value="#{password}" />
</h:inputSecret>
</td>
</tr>
<tr>
<td colspan="2">
<p:captcha immediate="true" validatorMessage="#{msg.wrongCaptcha}" requiredMessage="#{formsTexts.captcha} #{msg.isEmpty}" />
</td>
</tr>
<tr>
<td colspan="2" class="submit_row"><h:commandButton value="#{usersTexts.register}" action="#{userRegistry.register}" /></td>
</tr>
</table>
</h:form>
実際には動作しません...送信時に私はこのエラーを受け取ります:malformedXML:コンポーネントが失敗したコード:0x80004005(NS_ERROR_FAILURE)を返し、ぼかしで何も起こりません。 – James
テンプレートに「
」の代わりに「はい、あります。実際にはテンプレートの中だけではなく、具体的なページにありましたが、それは問題ではありません。...も追加しようとしましたが、問題は残ります。 –
James