Java 如何让struts2仅在POST上验证
例如,我有一个add方法,它在“get”中显示一个表单 在“post”中添加逻辑,即验证、调用服务方法等 在“获取”阶段,我不想验证 但struts2始终在这两个阶段有效Java 如何让struts2仅在POST上验证,java,struts2,Java,Struts2,例如,我有一个add方法,它在“get”中显示一个表单 在“post”中添加逻辑,即验证、调用服务方法等 在“获取”阶段,我不想验证 但struts2始终在这两个阶段有效 如何将struts2配置为仅在“post”上验证?忘记REST行为调用同一URL并根据您使用的Http谓词执行不同的操作: @RequestMapping(value = "/foo", method = RequestMethod.GET) public ModelAndView ReadFoobar(Locale loca
如何将struts2配置为仅在“post”上验证?忘记REST行为调用同一URL并根据您使用的Http谓词执行不同的操作:
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public ModelAndView ReadFoobar(Locale locale,
Model model,
HttpServletRequest request){
String foobar = getService().loadFoobar();
ModelAndView mav = new ModelAndView("foobarPage")
mav.addObject("foobar",foobar);
return mav;
}
@RequestMapping(value = "/foo", method = RequestMethod.POST)
public String InsertStuff(@RequestParam("stuff") String stuff,
Locale loc,
Model model,
HttpServletRequest req){
validate();
getService().insertStuff(stuff);
return "stuffPage";
}
这是Spring MVC,这是Struts2。你需要用行动来推理;不要使用Http谓词,而是使用不同的操作并仅为其中一个定义验证。例如:
表示GET的操作
public class ReadFoobar {
@Getter private String foobar;
public String execute(){
foobar = getService().loadFoobar();
return SUCCESS;
}
}
代表职位的行动
public class InsertStuff {
@Setter private String stuff = "";
public String execute(){
getService().insertStuff(stuff);
return SUCCESS;
}
public void validate(){
if (stuff.length()<3){
addFieldError("stuff","The mininum length is 3");
}
}
}
我也喜欢SpringMVC,但是如果您想要/需要/正在使用Struts2,请按照设计的正确方式使用它,否则它可能会变成一场噩梦;) 忘记REST行为调用同一URL,并根据您使用的Http谓词执行不同的操作:
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public ModelAndView ReadFoobar(Locale locale,
Model model,
HttpServletRequest request){
String foobar = getService().loadFoobar();
ModelAndView mav = new ModelAndView("foobarPage")
mav.addObject("foobar",foobar);
return mav;
}
@RequestMapping(value = "/foo", method = RequestMethod.POST)
public String InsertStuff(@RequestParam("stuff") String stuff,
Locale loc,
Model model,
HttpServletRequest req){
validate();
getService().insertStuff(stuff);
return "stuffPage";
}
这是Spring MVC,这是Struts2。你需要用行动来推理;不要使用Http谓词,而是使用不同的操作并仅为其中一个定义验证。例如:
表示GET的操作
public class ReadFoobar {
@Getter private String foobar;
public String execute(){
foobar = getService().loadFoobar();
return SUCCESS;
}
}
代表职位的行动
public class InsertStuff {
@Setter private String stuff = "";
public String execute(){
getService().insertStuff(stuff);
return SUCCESS;
}
public void validate(){
if (stuff.length()<3){
addFieldError("stuff","The mininum length is 3");
}
}
}
我也喜欢SpringMVC,但是如果您想要/需要/正在使用Struts2,请按照设计的正确方式使用它,否则它可能会变成一场噩梦;) 忘记REST行为调用同一URL,并根据您使用的Http谓词执行不同的操作:
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public ModelAndView ReadFoobar(Locale locale,
Model model,
HttpServletRequest request){
String foobar = getService().loadFoobar();
ModelAndView mav = new ModelAndView("foobarPage")
mav.addObject("foobar",foobar);
return mav;
}
@RequestMapping(value = "/foo", method = RequestMethod.POST)
public String InsertStuff(@RequestParam("stuff") String stuff,
Locale loc,
Model model,
HttpServletRequest req){
validate();
getService().insertStuff(stuff);
return "stuffPage";
}
这是Spring MVC,这是Struts2。你需要用行动来推理;不要使用Http谓词,而是使用不同的操作并仅为其中一个定义验证。例如:
表示GET的操作
public class ReadFoobar {
@Getter private String foobar;
public String execute(){
foobar = getService().loadFoobar();
return SUCCESS;
}
}
代表职位的行动
public class InsertStuff {
@Setter private String stuff = "";
public String execute(){
getService().insertStuff(stuff);
return SUCCESS;
}
public void validate(){
if (stuff.length()<3){
addFieldError("stuff","The mininum length is 3");
}
}
}
我也喜欢SpringMVC,但是如果您想要/需要/正在使用Struts2,请按照设计的正确方式使用它,否则它可能会变成一场噩梦;) 忘记REST行为调用同一URL,并根据您使用的Http谓词执行不同的操作:
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public ModelAndView ReadFoobar(Locale locale,
Model model,
HttpServletRequest request){
String foobar = getService().loadFoobar();
ModelAndView mav = new ModelAndView("foobarPage")
mav.addObject("foobar",foobar);
return mav;
}
@RequestMapping(value = "/foo", method = RequestMethod.POST)
public String InsertStuff(@RequestParam("stuff") String stuff,
Locale loc,
Model model,
HttpServletRequest req){
validate();
getService().insertStuff(stuff);
return "stuffPage";
}
这是Spring MVC,这是Struts2。你需要用行动来推理;不要使用Http谓词,而是使用不同的操作并仅为其中一个定义验证。例如:
表示GET的操作
public class ReadFoobar {
@Getter private String foobar;
public String execute(){
foobar = getService().loadFoobar();
return SUCCESS;
}
}
代表职位的行动
public class InsertStuff {
@Setter private String stuff = "";
public String execute(){
getService().insertStuff(stuff);
return SUCCESS;
}
public void validate(){
if (stuff.length()<3){
addFieldError("stuff","The mininum length is 3");
}
}
}
我也喜欢SpringMVC,但是如果您想要/需要/正在使用Struts2,请按照设计的正确方式使用它,否则它可能会变成一场噩梦;)