Struts2 Struts 2动作方法

Struts2 Struts 2动作方法,struts2,Struts2,是时候再问一个愚蠢的问题了,这又增加了一长串问题 我是Struts2的新手,多年来一直在使用旧的1.X。Struts 2操作可以大致等同于Struts 1 DispatchActions,只需添加方法(并在Struts.xml中定义它们) 那么,假设我有这个方法: public String create() throws Exception { // insert create logic here } 我想要的是让create()执行双重任务。如果在未传递任何参数的情况下调用cre

是时候再问一个愚蠢的问题了,这又增加了一长串问题

我是Struts2的新手,多年来一直在使用旧的1.X。Struts 2操作可以大致等同于Struts 1 DispatchActions,只需添加方法(并在Struts.xml中定义它们)

那么,假设我有这个方法:

public String create() throws Exception {
    // insert create logic here
}
我想要的是让create()执行双重任务。如果在未传递任何参数的情况下调用create(),它将返回输入(并显示JSP表单页面),否则它将处理表单数据并返回SUCCESS(并显示默认页面)

我现在唯一的方法就是检查请求中是否有任何值,这在我看来很愚蠢。如果我可以说“如果我通过HTTP调用它,那么显示表单,如果我通过HTTP POST调用它,那么进程将重定向到默认值”


正如我所说,我在这里可能很笨,但如果有任何帮助,我们将不胜感激。

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

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()
方法)


如果要强制执行
execute
submit
方法仅由HTTP GET和POST方法(分别)调用,则需要创建自定义拦截器。

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

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()
方法)

如果要强制执行
execute
submit
方法仅由HTTP GET和POST方法调用,则需要创建自定义拦截器