私は JSF を学んでおり、JSF 検証を理解する上で助けが必要です。「 http://courses.coreservlets.com/ 」の助けを借りて、同じページで手動、暗黙的、明示的な検証を行おうとしています。以下のように、バリデーションを使用して2つの入力フィールドを作成しました。
Customer Name: <h:inputText value="#{bean.customerName}" required="true" />
Account No: <h:inputText value ="#{bean.accountNo}" >
<f:validateLength minimum="10"></f:validateLength>
</h:inputText>
<h:commandButton value="Submit" action="#{bean.actionValidate}"></h:commandButton>
<h:messages globalOnly="true"></h:messages>
public String actionValidate(){
FacesMessage fcMessage = new FacesMessage();
if(getAccountNo().isEmpty() || getAccountNo() == null) {
fcMessage.setSummary("account no empty");
fcContext.addMessage(null, fcMessage);
}
if (fcContext.getMessageList().size()>0)
return null;
else
return "ManualValidationResult";
}
私の理解では、filed 1 の必須属性であり、f:validateLength 検証は Process & Validation フェーズで実行され、検証が失敗した場合、ライフ サイクルは Render response フェーズに進み、最初にエラー メッセージが表示されます。これが渡されたら、Bean の検証を実行する必要があります。理想的には、私の例では、Bean の検証は決して実行されません。しかし、「顧客名 - 検証エラー: 値が必要です」というメッセージが表示されます。両方のフィールドが空白のままの場合。
名前フィールドに入力すると、「アカウントが空ではありません」というメッセージが表示され、アカウント番号フィールドに値が入力された場合、後で「検証エラー: 長さが許容最小値の '5' 未満です」というメッセージが表示されます。
流れを理解できる方教えてください。