ITEEDU

Struts Gossip: Map-backed ActionForm

有的时候您的窗体内容可能是由程序动态产生的,这时候窗体上的字段与参数事先并无法得知,因而无法事先决定好 ActionForm 的属性,在Struts 1.1中,您可以使用Map-backed ActionForm,这样的ActionForm使用Map来储存窗体的字段值,一个例子如下:
UserForm.java
package onlyfun.caterpillar;

import java.util.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;

public class UserForm extends ActionForm {
protected Map map = new HashMap();

public void setValue(String key, Object value) {
map.put(key, value);
}

public Object getValue(String key) {
return map.get(key);
}

public Map getMap() {
return map;
}

public void reset(ActionMapping mapping,
HttpServletRequest req) {
map.clear();
}
}
在Action类别中,您可以如下面的方式来取值:
LoginAction.java
package onlyfun.caterpillar;

import javax.servlet.http.*;
import org.apache.struts.action.*;

public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
UserForm userForm = (UserForm) form;

String name =
(String) userForm.getValue("name");
String password =
(String) userForm.getValue("password");
.....
}
}