时间又是另一个愚蠢的问题,增加了很长一段时间。
我是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调用此方法,则处理然后重定向到默认值”。
就像我说的那样,我可能在这里非常愚蠢,但任何帮助都会受到赞赏。
答案 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方法(分别)调用execute
和submit
方法,则需要创建自定义拦截器。