最近做Struts2开发遇到两个问题,第一是在使用Struts2注解配置拦截器的时候,发现自定义拦截器无法通过注解实现,也就是除了@InterceptorRef和@InterceptorRefs就没有别的注解可用了,但是我用的是convention-plugin 2.1.6 不知道是不是我的问题。
另外一个,就是在做表单的时候,有时候需要修改数据库中某个实体的资料,比如就说一个用户的资料,有姓名,年龄或是住址,在修改的时候希望有个表单能先从数据库中把原先的资料给弄出来,然后再修改,其实也就是spring中AbstractFormController中的formBackingObject()方法的作用,多方探查没有找寻到好的方法,希望能有熟悉Struts2的朋友指点一下迷津。
我来回答第二个问题吧:
其实LZ说的应该是在Update的时候先从数据库获取最新的记录,然后再根据反射,直接修改记录吧。
Struts2中可以这样实现:
定义三个interceptor:
params--->prepare--->params
第一个params,你可以获取从页面获取记录id
第二个prepare,根据页面获取的id,从数据库中获取最新的记录
第三个params,就是把页面的值直接反射到最新的记录中。
具体的教程可以参考:
http://struts.apache.org/2.x/docs/crud-demo-i.html
对于第一个问题,我个人认为是Struts2中还是少用注解的方式来代替XML配置,XML配置虽然繁琐了点,但是很直观。
“在修改的时候希望有个表单能先从数据库中把原先的资料给弄出来,然后再修改”
该问题就是数据的准备问题:1、在转到表单页面前需要把相关的数据准备好。在struts中的做法就是页面的转向都要经过action,在action中准备数据。2、经过action转向到的页面是利用在action中准备的数据在页面展现。