Struts 2动作方法

时间:2010-07-13 19:51:40

标签: struts2

时间又是另一个愚蠢的问题,增加了很长一段时间。

我是Struts 2的新手,花了数年时间使用旧的1.X. Struts 2动作可以大致相当于Struts 1 DispatchActions,只需添加方法(并在struts.xml中定义它们)。

所以,假设我有这个方法:

public String create() throws Exception {
    // insert create logic here
}

我想要的是让create()做双重任务。如果调用create()而不传递任何参数,则返回INPUT(并显示JSP表单页面),否则它处理表单数据并返回SUCCESS(并显示默认页面)。

我现在唯一的方法是检查并查看请求中是否有任何值,这对我来说似乎很愚蠢。如果我可以说“如果我通过HTTP GET调用此方法显示表单,如果我通过HTTP POST调用此方法,则处理然后重定向到默认值”。

就像我说的那样,我可能在这里非常愚蠢,但任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您要找的是使用相同的操作来显示表单,然后(提交后)处理表单。

public class MyAction {
    @SkipValidation
    public String execute() throws Exception {
        return INPUT; // shows the form
    }

    public void validate() {
        // do your validations here...
    }

    public String submit() throws Exception {
        // process the form
        // redirect somewhere
    }
}

如果您的操作被映射为“myaction”,那么您的表单应提交给“myaction!submit”(即动态方法调用,它会调用您的submit()方法)。

如果要强制仅通过HTTP GET和POST方法(分别)调用executesubmit方法,则需要创建自定义拦截器。