论坛首页 入门技术论坛

struts2 基于convention的开发(1)

浏览 2518 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-03-02  

      当你使用struts2开发一个user实体的"增删改查"应用时,你或许是这样

来配置action

   <action name="createUser"    
             class="com.mycompany.webapp.user.UserAction" 
             method="create">
     <result name="success">/user/userCreate.jsp</result>
     <result name="input">/user/userEdit.jsp</result>
     <result name="home">/user/home.jsp</result>
  </action>

........

其所对应的url可能是这样:/app/createUser.action,/app/retrieveUser.action,

/app/updateUser.action,/app/deleteUser.action

依次类推,一个实体的"增删改查"需要重复4次这样的工作。一个实体类已有如此多配置信息。多个实体又如何呢?

 

那么我们可以使用struts2的另一个功能:在action标签中的name属性里指定wildcard(通配符)。

struts2提供星号(*)的通配符,以上应用我们可以这样配置:

<action name="*_*" class="com.mycompany.webapp.user.{2}Action" method="{1}">
    <result name="success">/{2}/{1}.jsp</result>
    <result name="input">/{2}/edit.jsp</result>
    <result name="home">/{2}/home.jsp</result>
</action>

其所对应的user实体的url可能是:/app/create_User.action,/app/retrieve_User.action,

/app/update_User.action,/app/delete_User.action

这样的话其它的实体也可以使用这种convention。

请注意在name属性中的分隔符显然是要有的,不然就无法区分两个星号所配置的部分

现在大概来总结一下此应用的convention:

1 action类的命名为:实体名称(大写)+Action

2 action标签中name属性的值为:方法名称+实体名称(大写)

3 实体所对应的jsp文件放在实体名称所对应的目录里面
4 初始jsp页面文件名称定义为"home",

validatation返回页面(也就是input所定义的页面)文件名称定义为edit 
5 在success中定义的jsp文件名称为:方法名称

 

 

   发表时间:2008-03-25  
  如果需要验证呢?一般是create或者update时候需要验证,验证失败后会默认返回到input视图.
  以上定义可以解决这个问题么?
0 请登录后投票
   发表时间:2008-04-05  
可以啊!上面已经配置了<result name="input">/{2}/edit.jsp</result>
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics