How to work with view in Struts 2?



在普通的旧servlets中,我可以使用doGetdoPost方法。在doGet中,我将用户转发到某个页面,在doPost中,我处理从我给出的页面输入的数据。所有这些都发生在一个servlet中。

但是Struts2使用的是Front Controller模式,而不是doGet/doPost,我只有execute方法。那么,我如何正确地给用户一些页面,这样他就可以在execute中查看、输入数据、提交和应用程序?

据我所知,我有两个选择(例如在注册表上):

  1. 将页面映射到另一个url:

    <action name="register_display">
        <result name="success" type="dispatcher">register.jsp</result>
    </action>
    <action name="register"
        class="magazine.action.client.RegisterClientAction"
        method="execute">
        <result name="success" type="redirectAction">/index</result>
        <result name="error" type="redirectAction">register_display
        </result>
    </action>
    
  2. 创建名为display的整个包,并在其中放置可以执行POST的所有视图:

    <package name="display" namespace="/display" extends="struts-default">
      <action name="register">
         <result name="success" type="dispatcher">register.jsp</result>
      </action>
    ...
    </package>
    

还有其他选择吗?哪个比较好?

在标准Struts2样式中,Action类只有一个工作方法,即execute方法。但是,您不必遵循此步骤。您可以在单个Action类中定义多个操作。

例如,您向users发出GET请求,该请求在UsersAction的默认execute方法中处理。

@Override
public String execute() {
    // fetch the list of users
    return SUCCESS;
}

假设您想在相同的操作中添加一个新用户,方法是将其发布到user_add。所以你定义了一个add方法:

public String add() {
    // add the user
    return SUCCESS;
}

struts.xml看起来与此类似:

<package name="users" extends="defaultPackage">
    <action name="users" class="com.example.UsersAction">
        <result>users.jsp</result>
    </action>
    <action name="user_add" class="com.example.UsersAction" method="add">
        <result type="redirect">users</result>
    </action>
</package>

在您的场景中,您将呈现页面,用户应该在运行(可能是空的)execute方法后看到该页面。然后,您将发出post请求,该请求将映射到Action类的另一个方法。

相关内容

  • 没有找到相关文章