更好地理解Struts2操作

更好地理解Struts2操作,struts2,action,Struts2,Action,我正在努力学习Struts 2.0,并试图更好地理解操作的概念。我有一个表单,我希望预先加载值。用户可以更改JSP中的值,然后提交表单,这将导致一个页面显示表单中嵌入的数据 我已经让它工作了,但不确定我的方法/逻辑是否正确 Struts.xml如下所示: <action name="LoadForm" class="actions.Test" method="execute1"> <result>/Test.jsp</result> </action

我正在努力学习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>

/Test.jsp
/TestResult.jsp
我正在使用
prepare()
预加载值

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

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

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

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


另外,我不知道为什么我们需要在Action类中使用2个以上的execute方法。

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

S2中的动作同时作为模型和控制器工作,很可能一个控制器正在执行多个任务。e、 g我们有一个行动,负责处理与用户相关的流程,包括

  • 创建新用户
  • 更新用户
  • 检查与用户相关的任何信息
  • 简而言之,我们不需要三个不同的动作来执行这些任务,但我们将创建一个动作,其中包含三个方法,负责处理这些任务


    我希望这能给你一个想法

    谢谢你的回答。我还需要一个澄清。如何控制特定的execute方法何时运行?假设,根据您的示例,我将create()、update()、check()作为三个方法,每个方法都指向不同的JSP页面。我如何从表单中调用update()?一个简单的方法是从JSP中这样命名您的操作,比如说updateUser,以及何时将其映射到xml文件中,您可以使用方法标记,如。注释也提供了相同的方法,并且您可以在操作标记和url标记中使用方法属性also@DeepakMahalingam但您应该使用modalDriven拦截器将模态对象(最佳实践)与动作分开。