JavaBean表单验证

First Step: write the JavaBean source code.

package register.test;
import java.util.Map;
import java.util.HashMap;
public class RegisterBean {
	private String name;
	private String age;
	private String email;
	private Map<String,String> errors;
	public RegisterBean() {
		this.name="";
		this.age="";
		this.email="";
		this.errors=new HashMap<String,String>();
	}
	public boolean isValid() {
		boolean flag = true ;
		if(!this.name.matches("\\w{6,15}")){
			flag = false ;
			this.name = "" ;	
			this.errors.put("errname","user name must between 6~15 words") ;
		}
		if(!this.email.matches("\\w+@\\w+\\.\\w+\\.?\\w*")){
			flag = false ;
			this.email = "" ;	
			this.errors.put("erremail","Email doesn't match.") ;
		}
		if(!this.age.matches("\\d+")){
			flag = false ;
			this.age = "" ;	
			this.errors.put("errage","Age must be a number") ;
		}
		return flag ;
	}
	public String getError(String key) {
		String value=this.errors.get(key);
		return value==null?"":value;
	}
	public void setName(String name) {
		this.name=name;	
	}
	public void setAge(String age) {
		this.age=age;	
	}
	public void setEmail(String email) {
		this.email=email;	
	}	
	public String getName() {
		return name;
	}
	public String getAge() {
		return age;
	}
	public String getEmail() {
		return email;
	}
}

Then We should have a register page, here we go:

<html>
<head>
	<title>Register Page</title>
</head>
<jsp:useBean id="user" scope="request" class="register.test.RegisterBean"/>
<body>
<form action="check.jsp" method="post">
	Account ID: <input type="text" name="name" value="<jsp:getProperty name="user" property="name"/>"/><%=user.getError("errname")%><br>
	Age :       <input type="text" name="age" value="<jsp:getProperty name="user" property="age"/>"/><%=user.getError("errage")%><br>
	Email:      <input type="text" name="email" value="<jsp:getProperty name="user" property="email"/>"/><%=user.getError("erremail")%><br>
	<input type="submit" value="Submit">
</form>
</body>
</html>

When we submit this form, we use check.jsp to check the form content.

<html>
<head>
	<title>Check Page</title>
</head>
<body>
<jsp:useBean id="user" scope="request" class="register.test.RegisterBean"/>
<jsp:setProperty name="user" property="*"/>
	<% if (user.isValid()) {%>
	<jsp:forward page="show.htm"/>
	<%} else {%>
	<jsp:forward page="index1.jsp"/>
	<%}%>
</body>
</html>

Here we omit the show page, it's not important.


*we should notice something here

->we should use the label to setProperty for the instance of a JavaBean, it will never be done automatically.

->when we need some data from the JavaBean, we use getProperty and if we need to modify the data, we must use setProperty label manually.



原文地址:https://www.cnblogs.com/jackhub/p/3147236.html