【问题标题】:Understanding Struts2 actions better更好地理解 Struts2 动作
【发布时间】:2012-06-15 05:40:56
【问题描述】:

我正在尝试学习 Struts 2.0,并且我正在尝试更好地理解动作的概念。我有一个表格,我想预先加载值。用户可以更改 JSP 中的值,然后提交表单,这将导致页面显示表单中输入的数据。

我已经让它工作了,但不确定我的方法/逻辑是否正确。

Struts.xml如下:

<action name="LoadForm" class="actions.Test" method="execute1">
  <result>/Test.jsp</result>
</action>

<action name="ShowResult" class="actions.Test" method="execute2">
  <result>/TestResult.jsp</result>
</action>

我正在使用prepare() 预加载值。

当我在浏览器中调用LoadForm.action 时,Test.jsp 会显示预加载的数据。

Test.jsp 有一个表单,其动作是ShowResult

当我提交表单时,它会导航到TestResult.jsp,在那里我会显示表单中的值。

这是正确的方法还是有更好的方法?

另外,我不确定为什么我们在 Action 类中需要超过 2 个执行方法。

【问题讨论】:

    标签: struts2 action


    【解决方案1】:

    几乎你是对的,除了你需要了解的一件事,prepare 方法类似于 init 方法,它可以帮助你在框架调用 execute 或任何其他方法之前初始化/准备数据。

    S2 中的动作同时作为模型以及控制器工作,并且很可能一个控制器正在执行多个任务。例如,我们有一个 Action 负责处理与用户相关的流程,其中包括

    1. 创建新用户
    2. 更新用户
    3. 检查与用户相关的任何信息

    因此,简而言之,我们不需要三个不同的 Action 来执行这些任务,但我们将创建一个包含三个方法的单个 Action,它们将负责处理这些任务。

    我希望这能给你一个想法

    【讨论】:

    • 感谢您的回答 Umesh。我需要再澄清一下。如何控制特定执行方法何时运行?可以说,根据您的示例,我将 create()、update()、check() 作为三种方法,每种方法都指向不同的 JSP 页面。如何调用表单中的 update()?
    • 一种简单的方法是从 JSP 中这样命名您的操作,例如 updateUser,当您将其映射到您的 xml 文件中时,您可以使用像 .Annotation 也提供了同样的方法,你也可以在你的 action 标签和 url 标签中使用方法属性
    • @DeepakMahalingam 但您应该使用 modalDriven 拦截器将模态对象(最佳实践)与 Action 分开。 vaannila.com/struts-2/struts-2-example/…
    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多