浏览 3569 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-12-31
![]() 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-01-02
看看我的集成,在struts-config.xml中定义formbean:
<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="user" type="org.layout.model.User"/> </form-bean> 在校验文件validation.xml中: <form name="loginForm"> <field property="user.name" depends="required,minlength,maxlength"> <arg0 key="label.username"/> <arg1 key="${var:minlength}" name="minlength" resource="false"/> <arg2 key="${var:maxlength}" name="maxlength" resource="false"/> <var> <var-name>maxlength</var-name> <var-value>16</var-value> </var> <var> <var-name>minlength</var-name> <var-value>2</var-value> </var> </field> <field property="user.password" depends="required,minlength,maxlength"> <arg0 key="label.password"/> <arg1 key="${var:minlength}" name="minlength" resource="false"/> <arg2 key="${var:maxlength}" name="maxlength" resource="false"/> <var> <var-name>maxlength</var-name> <var-value>16</var-value> </var> <var> <var-name>minlength</var-name> <var-value>2</var-value> </var> </field> </form> 在action中如下调用: DynaActionForm aForm = (DynaActionForm);form; ActionMessages messages = form.validate(mapping, request);; if(!messages.isEmpty();); { saveMessages(request, messages);; return mapping.findForward("prompt");; } User user = (User);aForm.get("user");; UserDAO userDAO = (UserDAO);getWebApplicationContext();.getBean("userDAO");; user = userDAO.get(user.getName();, user.getPassword(););; 其实这样子的集成感觉很不错的,除了少了dto和转换(至少你要用一个copyProperty吧),pojo实现了序列化,甚至可以直接深入到Hibernate底层,这样子就省缺了以前一直讨论formbean和po是不是合并或者在哪个层面上进行转换。 Archie 写道 http://www.theserverside.com/articles/article.tss?l=StrutsLiveCh10
![]() |
|
返回顶楼 | |
发表时间:2005-01-02
楼上的答复好象跟文章内容不相干吧,文章是讨论怎么与含有非string类的属性的POJO的集成
|
|
返回顶楼 | |
发表时间:2005-01-03
macher 写道 楼上的答复好象跟文章内容不相干吧,文章是讨论怎么与含有非string类的属性的POJO的集成
不好意思,没有仔细看那篇文章就乱发言了。看了题目是集成pojo和actionForm就跑了。。。 我看了那篇文章,确实讨论的与pojo集成的过程中遇到的一些属性转化的问题和解决建议。但是感觉作者的解决方案是不是过于繁琐,如果能够在校验中定义好校验的mask,在setProperty的时候动态检查一遍propety的类型并且把request中传递过来的值进行转换(可以检查到如果非string就动态转化一边),如果在convert的过程中出现错误就保存到对应的一个error的message中(类似于生命周期在request过程中的一个map)并继续转化下一个property直到完成..... 其实问题在于转化失败的时候怎样cache住这个值并且返回到输入页面显示出来。 |
|
返回顶楼 | |
发表时间:2005-01-03
此外,我现在项目里面处理类似问题的时候是额外的进行判断。使用DynaValidatorForm加上内嵌pojo,如果有date或者其他的不可直接set的属性就在DynaValidatorForm里面增加一个属性,然后在action中进行判断和转化给DynaValidatorForm.pojo
到目前为止还没有出现问题,当然我不肯定是最好的解决方案。不过我觉得DynaValidatorForm还是很有用场的。 macher 写道 楼上的答复好象跟文章内容不相干吧,文章是讨论怎么与含有非string类的属性的POJO的集成
|
|
返回顶楼 | |