【www.bbyears.com--php入门】
本教程我们介绍在提交表单时:javabean存储表单数据,在action中重写validate方法进行简单的校验,创建一个struts2表单并和javabean匹配 Your registration information:
javabean存储表单数据
为了封装数据,我们将使用一个简单的Java类,它遵循基本的Java Bean规范,即为每个属性设置public get/set 方法。
Person.java
package model;
public class Person {
private String firstName;
private String lastName;
private String email;
private int age;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [firstName=" + firstName + ", lastName=" + lastName + ", email="
+ email + ", age=" + age + "]";
}
}
注意上面的javabean:
年龄为int类型(action在讲表单参数填充到javabean中,会进行适当的类型转换)
复写了toString方法(
action处理表单数据
action类需要继承ActionSupport,在Register类中我们申明一个属性personBean,并且提供相应的get/set方法。同时,在Register类中复写execute方法和validate方法。
execute方法:
默认实现不执行任何操作的返回"success"。子类应重写此方法以提供业务逻辑,并由此返回Action的预定义的返回值:SUCCESS、NONE 、ERROR、INPUT、LOGIN。
我们在Struts.xml中添加action元素时,需要定义这些返回值对应的页面(注:返回哪些写哪些)。
validate方法:
在Validatable接口中定义了一个validate()方法,重写该方法,如果建议表单输入域出现错误,则将错误添加到Actionsupport类的fieldErrors域中,然后通过OGNL表达式负责输出。
Register.java
package test.action;
import model.Person;
import com.opensymphony.xwork2.ActionSupport;
public class Register extends ActionSupport {
private static final long serialVersionUID = 1L;
private Person personBean;
public String execute() throws Exception {
// call Service class to store personBean's state in database
return SUCCESS;
}
public void validate() {
if (personBean.getFirstName().length() == 0) {
addFieldError("personBean.firstName", "firstName is required");
}
if (personBean.getEmail().length() == 0) {
addFieldError("personBean.email", "firstName is required");
}
if(personBean.getAge()<18){
addFieldError("personBean.age", "Age is required and must be 18 or older");
}
}
public Person getPersonBean() {
return personBean;
}
public void setPersonBean(Person person) {
personBean = person;
}
}
jsp页面的struts2表单
表单维持和错误输出
用struts标签
struts2的主题和模板
struts2默认主题为XHTML,我们可以在struts.properties文件中修改struts2的默认主题。
struts.properties
struts.ui.theme=simple
表单书写格式
因为用了simple模板,就需要自己定义fielderror的显示。
格式为:
fielderror默认主题是ul li的格式,我们需要可以将默认文档进行更改。
register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
register
firstName:
lastName:
email:
age:
显示结果的thankyou.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
struts.xml配置
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">