1

我需要了解简单的流程,因为我是 Struts2 的新手并且正在努力解决它。

我有添加学生信息的简单表格。此表单用于分别使用添加​​和编辑操作添加和编辑,并且都调用一个名为 saveOrUpdate 的方法,该方法必须检查 id 并插入或更新用户。一些常见的东西。我使用的网址如下

http://localhost:8080/Student/add  -> action = add  -> method = saveOrUpdate -> register.jsp
http://localhost:8080/Student/edit -> action = edit -> method = saveOrUpdate -> register.jsp

我的问题:

当我键入时http://localhost:8080/Student/add,会显示 register.jsp 但同时会触发 saveOrUpdate 从而在其中执行代码(插入条件)。

如何在http://localhost:8080/Student/add不执行 saveOrUpdate 的情况下显示用户空白的新 register.jsp 页面?

我的解决方案如下,但你如何做到这一点。我的方法对吗?之前有所不同,但阅读在线教程得出的结论如下。这有点冗长,因为添加和编辑使用相同的结果。任何帮助。

<action name="add">
            <result>/WEB-INF/pages/student/register.jsp</result>
        </action>

        <action name="edit">
            <result>/WEB-INF/pages/student/register.jsp</result>
        </action>

register.jsp 按钮将在下面具有添加和编辑数据的操作。

<action name="insertOrUpdateStudent" class="com.myapp.actions.StudentAction" method="insertOrUpdateStudent">
    <result name="success" type="redirectAction">list</result>
    <result name="input">/WEB-INF/pages/student/register.jsp</result>
</action>
4

3 回答 3

1

您可以像这样使用全局结果:

<package>
   <global-results>
      <result name="success">/WEB-INF/pages/student/register.jsp</result>
   </global-results>

   <action name="add"/>
   <action name="edit"/>
</package>
于 2012-10-04T21:11:05.830 回答
0

您可以为添加/编辑操作添加不同的方法。

<action name="add" method="add" class="com.myapp.actions.StudentAction">
  <result>/WEB-INF/pages/student/register.jsp</result>
</action>

<action name="edit" method="edit" class="com.myapp.actions.StudentAction">
  <result>/WEB-INF/pages/student/register.jsp</result>
</action>
于 2012-10-04T21:22:17.797 回答
0

另一种方式,

添加约定插件:struts2-conventions-plugin-xxxjar,其中xxx为版本。

创建:/WEB-INF/content/register-input.jsp 和 /WEB-INF/content/register-success.jsp

如果Register类返回输入,则调用register-input,如果返回成功则调用register-success。如果您直接调用 register-input 并且没有 RegisterInput 类,则直接呈现视图。

一开始可能很难看到价值,但尝试一下,你就会上瘾。

为了更符合您的命名,您可以使用适当的视图返回 -add、-edit 等,尽管我个人不会这样做并坚持使用内置字符串(成功、输入、错误......)并映射在命名空间中添加、编辑等。

于 2012-10-04T22:16:41.523 回答