【问题标题】:Do I need to create a new Struts Action class for each and every request?我是否需要为每个请求创建一个新的 Struts Action 类?
【发布时间】:2012-07-20 05:33:02
【问题描述】:

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

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

【问题讨论】:

  • 如何简化它取决于您。如果动作属于同一个域,则执行一个动作,否则将其拆分。

标签: java jakarta-ee struts2


【解决方案1】:

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

  1. 如果所有链接都在做相同类型的工作(例如与用户相关的工作),最好使用多种方法创建一个操作。

S2 提供了为每个动作映射定义方法的方法,并且基于方法名称 S2 将调用您的动作的尊重方法,例如

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

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

对于简单的一页到另一页的重定向,S2 提供了一种非常优雅的方式,它将在运行时创建一个带有执行方法的空操作,并且始终返回 SUCCESS这就是您需要做的

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

在上述情况下,如果动作映射中的类属性留空,则默认使用 com.opensymphony.xwork2.ActionSupport 类。 详情参考本页action-configuration

【讨论】:

  • 它给出错误消息“没有为指定的 url 找到操作配置。”这是我的链接 First Page 我的 struts 配置文件是
【解决方案2】:

您不需要为 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>

【讨论】:

    【解决方案3】:

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

    这在 struts2.xml 中是一个优势,而在 struts1 中,我想我们需要使用 dispatch action 来调用特定的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多