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";
        很明显,不稳妥。所以如何取舍,颇为困扰。
        如果有哪位大侠有好的方法,敬请赐教。

  • 相关阅读:
    JAVA基础——编程练习(二)
    JAVA基础——面向对象三大特性:封装、继承、多态
    JVM内存
    50. Pow(x, n) (JAVA)
    47. Permutations II (JAVA)
    46. Permutations (JAVA)
    45. Jump Game II (JAVA)
    43. Multiply Strings (JAVA)
    42. Trapping Rain Water (JAVA)
    41. First Missing Positive (JAVA)
  • 原文地址:https://www.cnblogs.com/mount/p/2241040.html
Copyright © 2011-2022 走看看