我是否需要为每个请求创建一个新的Struts Action类?

时间:2012-07-20 05:33:03

标签: java java-ee struts2

我是struts的新手,我对Struts有一个基本的疑问。

我创建了一个新网页,其中包含10个链接(link1,link2,...... link10)。点击每个链接时,它应链接到相应的页面。我的问题是我是否需要创建10个新的Struts Action类来执行重定向,或者我还有其他方法可以处理可以处理所有10个链接的单个Struts Action类。

3 个答案:

答案 0 :(得分:3)

它取决于所有这10个链接将要做什么。这里有几个选项。

  1. 如果您所有链接都在进行相同类型的工作(例如与用户相关的工作),则最好使用多种方法创建一个操作。
  2. S2提供了为每个动作映射定义方法的方法,并且基于方法名称S2将调用您所采取行动的尊重方法,如

    <action name="action1" class="myActionClass" method="method1"/>
    <action name="action2" class="myActionClass" method="method2"/>
    

    请注意,只有在执行任何重定向等操作之前需要实现某种逻辑时,才使用方法创建一个Action类。

    对于简单的一页到其他页面重定向S2提供了一种非常优雅的方式,它将在运行时使用execute方法创建一个空Action并始终返回SUCCESS这就是你需要做的事情

    <action name="Hello">
       // ...
    </action>
    

    在上述情况下如果动作映射中的class属性为空,则com.opensymphony.xwork2.ActionSupport类用作默认值。 有关详细信息,请参阅此页面action-configuration

答案 1 :(得分:1)

您不需要为Struts 2中的每个URL单独执行操作。您可以使用单个类,只需为每个链接创建单独的函数。

struts.xml中的示例操作定义:

<action name="Link1" class="com.project.YourActionClass" method="handleLink1">
            ........
</action>

<action name="Link2" class="com.project.YourActionClass" method="handleLink2">
           .........
</action>

答案 2 :(得分:1)

不需要为每个链接创建单独的动作类,我们只需要使用method属性配置要在每个链接上单击调用的方法名称,一个动作类就足够了,应该配置动作映射在struts.xml中。

这是struts2.xml中的一个优点,就像在struts1中一样,我想我们需要使用调度操作来调用特定的方法。