この記事では、Webフォームポートレットでバリデーションを効果的に管理する方法について、簡単な例を紹介します。
解像度
なお、以下の再現手順(またはそれに類するもの)を踏むと、エラーが発生します:
- Web Formポートレットをページに配備する
- レンチをクリックし、「構成」を選択
- 新しいフィールドを作成する
- フィールドのタイトルを「Yes」または「No」にし、タイプをラジオボタンに変更します。
- オプション欄に「Yes」「No」を入力します。
- バリデーション」をクリックし、「バリデーションスクリプト」欄に「return false」と入力します;
- Validation Error Messageに「False」と入力します!
- 保存]をクリックします。
- フォームにデータを入力する
- 送信をクリック
上記のシナリオでは、エラーメッセージが表示されないままフォームが送信され、 "False!"
デフォルトでは、バリデーションはオフになっています。 バリデーションをオンにするには、Liferay Home ディレクトリにある portlet-ext.properties ファイルで validation.script.enabled=true を設定します。
例
この検証は、さまざまな形で活用することができます。 電話番号やメールアドレスの確認には、以下のスクリプトをご自由にお使いください。
テキストフィールドを追加し、検証フィールドの下に、9桁の数字を検証する次のスクリプトを入力します。
var regexObj = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
if (regexObj.test(currentFieldValue)) {
return true;
} else {
return false;
}
メールアドレスに@とピリオドがあるかどうかを確認するには、次のスクリプトを使用します:
var isEmail = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
if(currentFieldValue.search (isEmail) == -1 && currentFieldValue != '') {
return false;
} else {
return true;
}
追加情報
なお、特定の環境に対応したWeb Formポートレットのコード変更は、開発者自身の判断で行うものであり、Liferayサブスクリプションサービスではサポートしません。