3. ActionForm类
ActionForms represents request data coming from the browser. ActionForms are used to populate HTML forms to display to end users and to collect data from HTML forms.
Create JavaBean properties for all the fields that you want to collect from the HTML form. Each getter and setter pair defines a property. The overrided reset method gets called each time a request is made.
The validate method returns a list of errors(ActionErrors). The ActionErrors display on the input HTML form. Notice that when you construct an ActionError object, you must pass it a key into resource bundle (“userRegistration.firstName.problem”). Thus, we need to add a value to this key in the Resource bundle.
package strutsTutorial;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class UserRegistrationForm extends ActionForm{
private String firstName;
private String lastName;
private String userName;
private String password;
private String passwordCheck;
private String email;
private String phone;
private String fax;
private boolean registered;
private Address address = new Address();
private static Log log = LogFactory.getLog(UserRegistrationAction.class);
public String getFirstName() { return firstName;}
public void setFirstName(String firstName) {this.firstName = firstName;}
…… other getter/setter methods
public void reset(ActionMapping mapping,
HttpServletRequest request) {
firstName=null;
lastName=null;
userName=null;
password=null;
passwordCheck=null;
email=null;
phone=null;
fax=null;
registered=false;
log.trace("reset");
}
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)
{
ActionErrors errors = new ActionErrors();
if(firstName==null || firstName.trim().equals(""))
{
errors.add("firstName",
new ActionMessage("userRegistration.firstName.problem"));
}
return errors;
}
}
ActionForm类在进入Action类处理之前 主要用于收集输入表单(input view) 中的信息并生成ActionForm对象传递给Action类进行处理. Validate()方法 主要用于判断用户输入的合法性.If invalid user input, the control gets redirect back to the input form,而不会进入Action类.
errors.add("firstName", new ActionMessage("userRegistration.firstName.problem"));
ActionErrors对象errors是由validate方法返回的一个错误集, firstName是在input form前台运用的逻辑错误名,ActionMessage是一个错误信息对象,userRegistration.firstName.problem是resource bundle中的键,而当错误发生的时候,所显示给前台jsp表单的错误信息则是resource bundle中与之对应的值.