zoukankan      html  css  js  c++  java
  • struts2中action实现Preparable接口的利弊

      最近在学习struts2,发现了很多惊喜,在设计上,确实很优秀,这两天在研究怎么做出一个好的架构,以后好用。
        今天看了包中的showcase例子,发现了一种新的配置action方法:

            <action name="edit-*" class="org.apache.struts2.showcase.action.EmployeeAction">
          
    <param name="empId">{1}</param>
                
    <result>/empmanager/editEmployee.jsp</result>
                
    <interceptor-ref name="crudStack">
                    <
    param name="validation.excludeMethods">execute</param>
                </
    interceptor-ref>
            
    </action>

        当时昏了一下,用过这么多MVC的框架,第一次看到action还可以用*配的,很牛啊,自己配了一个,不好使,找原因,发现这里的EmployeeAction实现了com.opensymphony.xwork2.Preparable接口,并实现了prepare()方法,再试,成功。但发现个问题,如果这个action中还有其它的控制处理,而配置文件用的不是这种*形式,比如我的例子:

    <action name="BookAction" class="com.sigon.crud.action.BookAction">
                
    <result type="redirect">List.action</result>
            
    </action>
    <action name="Edit*" class="com.sigon.crud.action.BookAction" method="load">
                
    <param name="isbn">{1}</param>
                
    <result>Edit.jsp</result>
            
    </action>

        这里两个action用的是一个action类文件,而且BookAction实现了上面所说的Preparable接口,这时就需要将BookAction中的isbn初始化,否则在页面调用BookAction时出空指针异常
        而在实际项目中,一个Action处理多个控制逻辑是家常便饭,如果还想用这种形式,就要在声明isbn时赋初值,本例中是
    private String isbn = "2";
        很明显,不稳妥。所以如何取舍,颇为困扰。
        如果有哪位大侠有好的方法,敬请赐教。

  • 相关阅读:
    Castle Core 4.0.0 alpha001发布
    URL安全的Base64编码
    .NET Core RC2/RTM 明确了时间表
    一个免费的、跨平台的、开源音频编辑器Audacity
    Azure Service Fabric 开发环境搭建
    Microsoft Loves Linux
    微软将向Linux用户提供SQL Server程序
    微软收购Xamarin,你怎么看?
    我的梦幻2015,祝大家猴年吉祥,万事如意,幸福安康
    通用的序列号生成器库
  • 原文地址:https://www.cnblogs.com/mount/p/2241040.html
Copyright © 2011-2022 走看看