Мне нужно знать, как использовать m нескольких валидаторов для нескольких полей, таких как имя и идентификатор электронной почты, а также возраст и номера телефонов.у меня есть подсказка, что в ajax я могу использовать несколько валидаторов для одной формы с разными полями, но в jsf работает только одно поле, такое как валидатор имени или валидатор электронной почты, если я использую два валидатора для одной формы, это не работает, и вот мойкод
package com.dnb;
import java.util.Date;
import javax.faces.component.UIComponent;
public class UserBean
{
private String username;
public String getUsername()
{
return username;
}
public void setUserName(String UserName) {
this.username = UserName;
}
private String emailid;
public String getEmailId()
{
return emailid;
}
public void setEmailId(String EmailId) {
this.emailid = EmailId;
}
private int age;
private Object city;
public String getage()
{
return "";
}
public void setAge(int Age) {
this.age = age;
}
public String getcity()
{
return "";
}
public void setcity(int City) {
this.city = city;
}
public void success() {
setProgressString(getProgressString() + "(Strored successfully)");
}
private void setProgressString(String string) {
// TODO Auto-generated method stub
}
public String getProgressString() {
return getProgressString();
}
private boolean buttonRendered = true;
private boolean enabled=false;
private Long startTime;
public String startProcess() {
setEnabled(true);
setButtonRendered(false);
setStartTime(new Date().getTime());
return null;
}
public Long getCurrentValue(){
if (isEnabled()){
Long current = (new Date().getTime() - startTime)/1000;
if (current>100){
setButtonRendered(true);
}else if (current.equals(0)){
return new Long(1);
}
return (new Date().getTime() - startTime)/1000;
} if (startTime == null) {
return Long.valueOf(-1);
}
else
return Long.valueOf(101);
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public Long getStartTime() {
return startTime;
}
public void setStartTime(Long startTime) {
this.startTime = startTime;
}
public boolean isButtonRendered() {
return buttonRendered;
}
public void setButtonRendered(boolean buttonRendered) {
this.buttonRendered = buttonRendered;
}
}
JSF:
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<html>
<body>
<f:view>
<h:form id="ajaxValidatorForm">
<rich:panel>
<f:facet name="header">
<h:outputText value="User Info:" />
</f:facet>
<h:panelGrid columns="4">
<h:outputText value="Name:" />
<h:inputText value="#{userBean.username}" id="username" required="true" >
<f:validator validatorId="nameValidator" />
<h:message for="username"></h:message>
</h:inputText>
<h:outputText value="Email:" />
<h:inputText value="#{userBean.emailId}" id="emailid" required="true" >
<f:validator validatorId="nameValidator" />
<h:message for="emailid"></h:message>
</h:inputText>
</h:panelGrid>
</rich:panel>
</h:form>
</f:view>
</body>
</html>
проверка имени:
package com.dnb;
import javax.faces.application.FacesMessage;
public class NameValidator implements Validator
{
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException
{
String name = (String) value;
if(!name.contains("123"))
{
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setSummary("Name must be 3 to 8 letters");
message.setDetail("Name must be 3 to 8 letters");
context.addMessage("userForm:Name", message);
throw new ValidatorException(message);
}
}
Проверка адреса электронной почты:
package com.dnb;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
public class EmailValidator implements Validator
{
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException
{
String email = (String) value;
if(!email.contains("@"))
{
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setSummary("Email is not valid,Example@abc.com");
message.setDetail("Email is not valid,Example@abc.com");
context.addMessage("userForm:Email", message);
throw new ValidatorException(message);
}
}
}
просьба дать идеальный ответна мой вопрос.
Если я использую одно поле в качестве E.mail, я получаю сообщение валидатора, если я использую два или более полей, таких как имя, номер телефона, я не получаю сообщения валидатора. Работает только одно поле, какиспользовать несколько полей в валидаторах jsf