JSF 2.0を使用してWebアプリケーションを作成しており、フルネームの検証を行っています。
<h:inputText value="#{PersonalInformationDataBean.fullName}" size="75" id="fullName" >
<f:validator validatorId="fullNameValidator" />
</h:inputText>
<font color="red"><br /><h:message for="fullName"/></font>
以下のJavaで私が持っているものです
public class FullNameValidator implements Validator {
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException {
String enteredName = (String) value;
// Pattern p = Pattern.compile("([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)");
Pattern p = Pattern.compile("([a-zA-Z\\s]+)");
Matcher m = p.matcher(enteredName.trim());
System.out.println("trimmed data is " + enteredName.trim());
boolean matchFound = m.matches();
if (enteredName.trim().length() == 0) {
FacesMessage message = new FacesMessage();
message.setSummary("Please enter name.");
throw new ValidatorException(message);
}
if (enteredName.trim().length() < 10) {
FacesMessage message = new FacesMessage();
message.setSummary("Name should be atleast 10 characters.");
throw new ValidatorException(message);
}
if (!matchFound) {
FacesMessage message = new FacesMessage();
message.setSummary("Invalid Name.");
throw new ValidatorException(message);
}
// FacesMessage message = new FacesMessage();
// message.setSummary("");
// throw new ValidatorException(message);
}
}
プロジェクトをローカルで実行すると、完全に実行されます。
このプロジェクトをオンラインで行ったとき、私は問題に直面しています。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ fullName data as + Error Message +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 123343543534545 + Invalid Name +
+ fahim + Full name should be 10 characters +
+ null (blank) + NO MESSAGE, here I was expecting +
+ + result as Please enter name +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
値を渡さないのに、名前を入力してくださいというエラーメッセージが表示されないのはなぜかわかりません。私がここで何を見逃しているのか分かりますか?
ノート:
私は私が下に印刷したすべてのメッセージを受け取るファイルにtrimmed data is
さえ入りませんcatalina.out
System.out.println
問題は、その時点でデータを渡すと、検証のみが呼び出されることです。それ以外の場合、検証は行われません。ここで欠けているものを教えてください。