本人很懒,相当懒,一个方法能写一遍绝不写两遍。
而普通的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,上面说
不死心,查找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");
}
即可。方便啊