Struts的動態表單的應用
假如你使用過struts先前的版本,你就會注重到你需要花費大量的時候來寫ActionForm類文件,而這些類文件對於struts都是非常要害的(它充當“View”的一部分),通常它的結構就是bean properties在加上一個validate方法(有時還有reset方法)。
隨著struts1.1版本的推出,開發員有了另外一種方法來完成前面的任務:使用DynaBeans。DynaBeans動態生成Java Beans。這就意味著我們可以通過配置(通常利用XML)
來生成formbean而不是在formbean中硬編碼。
為了了解DynaBeans(struts中為Dynaforms)是如何工做的,讓我們看一個簡單的表單,字段有:name,address,telephone等,下面的代碼為通常的寫法(沒有使用Dynaforms)。
article1.CustomerForm
package article1;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionError;
import javax.servlet.http.HttpServletRequest;
public class CustomerForm extends ActionForm {
protected boolean nullOrBlank (String str) {
return ((str == null) (str.length() == 0));
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (nullOrBlank(lastName)) {
errors.add("lastName",
new ActionError("article1.lastName.missing"));
}
if (nullOrBlank(firstName)) {
errors.add("firstName",
new ActionError("article1.firstName.missing"));
}
if (nullOrBlank(street)) {
errors.add("street",
new ActionError("article1.street.missing"));
}
if (nullOrBlank(city)) {
errors.add("city",
new ActionError("article1.city.missing"));
}
if (nullOrBlank(state)) {
errors.add("state",
new ActionError("article1.state.missing"));
}
if (nullOrBlank(postalCode)) {
errors.add("postalCode",
new ActionError("article1.postalCode.missing"));
}
if (nullOrBlank(phone)) {
errors.add("phone",
new ActionError("article1.phone.missing"));
}
return errors;
}
private String lastName;
private String firstName;
private String street;
private String city;
private String state;
private String postalCode;
private String phone;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {