本人很懒,相当懒,一个方法能写一遍绝不写两遍。
而普通的ActionForm必须要在自己写好多get 、set方法,很烦,幸好有DynaActionForm解脱了我。
但是今天想使用DynaActionForm传对象的时候碰到问题了,准确点说就是我希望DynaActionForm实现如下的功能:
public class UserActionForm extends Actions{
private User user;
public User getUser();
public User setUser();
}
可是我不知道DynaActionForm能不能传对象,还是只能传一些普通的类型。查找http://struts.apache.org/的User Guide,上面说
The types supported by DynaActionForm include:
java.math.BigDecimal
java.math.BigInteger
boolean and java.lang.Boolean
byte and java.lang.Byte
char and java.lang.Character
java.lang.Class
double and java.lang.Double
float and java.lang.Float
int and java.lang.Integer
long and java.lang.Long
short and java.lang.Short
java.lang.String
java.sql.Date
java.sql.Time
java.sql.Timestamp
我晕了,难道不行。
不死心,查找Struct in Action里面又说:
“你可以在使用ActionForm 的任何地方使用DynaActionForm”。搞得我很迷惑。
最后的结论是:可以的。经过我一天的试验。
user.jsp如下写:
<html:form action="/shangJia">
name : <html:text name="userForm" property="user.name" />
<html:errors property="name" />
street : <html:text name="userForm" property="user.name" />
<html:errors property="street" />
phone : <html:text name="userForm" property="user.name" />
<html:errors property="phone" />
<br />
<html:submit />
<html:cancel />
</html:form>
struts-config.xml如下写:
<form-beans>
<form-bean name="userForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="shangJia" type="com.test.Hibernate.User" />
</form-bean>
</form-beans>
<action-mappings>
<action attribute="userForm" input="/user.jsp" name="newShangJiaForm" path="/user" scope="request" type="com.web669.Hibernate.ShangJiaAction" />
</action-mappings>
UserAction.java如下写:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaActionForm shangJiaForm = (DynaActionForm) form;
User user = (User) shangJiaForm.get("user");
userDAO.save(user);
return mapping.findForward("indexGO");
}
即可。方便啊
而普通的ActionForm必须要在自己写好多get 、set方法,很烦,幸好有DynaActionForm解脱了我。
但是今天想使用DynaActionForm传对象的时候碰到问题了,准确点说就是我希望DynaActionForm实现如下的功能:
public class UserActionForm extends Actions{
private User user;
public User getUser();
public User setUser();
}
可是我不知道DynaActionForm能不能传对象,还是只能传一些普通的类型。查找http://struts.apache.org/的User Guide,上面说
The types supported by DynaActionForm include:
java.math.BigDecimal
java.math.BigInteger
boolean and java.lang.Boolean
byte and java.lang.Byte
char and java.lang.Character
java.lang.Class
double and java.lang.Double
float and java.lang.Float
int and java.lang.Integer
long and java.lang.Long
short and java.lang.Short
java.lang.String
java.sql.Date
java.sql.Time
java.sql.Timestamp
我晕了,难道不行。
不死心,查找Struct in Action里面又说:
“你可以在使用ActionForm 的任何地方使用DynaActionForm”。搞得我很迷惑。
最后的结论是:可以的。经过我一天的试验。
user.jsp如下写:
<html:form action="/shangJia">
name : <html:text name="userForm" property="user.name" />
<html:errors property="name" />
street : <html:text name="userForm" property="user.name" />
<html:errors property="street" />
phone : <html:text name="userForm" property="user.name" />
<html:errors property="phone" />
<br />
<html:submit />
<html:cancel />
</html:form>
struts-config.xml如下写:
<form-beans>
<form-bean name="userForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="shangJia" type="com.test.Hibernate.User" />
</form-bean>
</form-beans>
<action-mappings>
<action attribute="userForm" input="/user.jsp" name="newShangJiaForm" path="/user" scope="request" type="com.web669.Hibernate.ShangJiaAction" />
</action-mappings>
UserAction.java如下写:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaActionForm shangJiaForm = (DynaActionForm) form;
User user = (User) shangJiaForm.get("user");
userDAO.save(user);
return mapping.findForward("indexGO");
}
即可。方便啊