I am creating web application using JSF 2.0 where I am doing validation for full name.
<h:inputText value="#{PersonalInformationDataBean.fullName}" size="75" id="fullName" >
<f:validator validatorId="fullNameValidator" />
</h:inputText>
<font color="red"><br /><h:message for="fullName"/></font>
In java below is what I have
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);
}
}
When I run project locally, it runs perfectly.
When I took this project online, I am facing problem.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 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 +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I don't understand when I don't pass any value, why I don't get error message saying Please enter name. Any idea what I am missing here?
Note:
I don't even get trimmed data is
in catalina.out
file where I get all message which I have printed under System.out.println
The problem is when I pass data at that time only validation is called. Else validation is not happening. Please let me know what I am missing here.