使用SimpleFormController,但发现必须要设置formView属性,能不设置这个属性吗??1、发现在地址栏输入/xxxx.do不会直接进Controller中,而是先跑到formView设置的页面里,需要POST提交后才进 Controller,然后再返回到successView中,可开发过程中,successView和formView往往是一样的,这不是多余么~~2、有些时候输入/xxxx.do后需要先进Controller取一些数据然后返回到successView中,这一点是经常用到的,如果Spring必须要POST提交才能进Controller,那也太不合理了吧~~所以想如何能以GET方式进入Controller,这样即可以不设置formView属性,也可以实现第2条的需要,目前知道重写isFormSubmission()和使用referenceData(...)方法,但想求一个最佳实践,还请各位指点一下,谢谢了~~
@Controller
@RequestMapping("/addOwner.do")
@SessionAttributes(types = Owner.class)
public class AddOwnerForm { private final Clinic clinic; @Autowired
public AddOwnerForm(Clinic clinic) {
this.clinic = clinic;
} @InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
dataBinder.setDisallowedFields(new String[] {"id"});
} @RequestMapping(method = RequestMethod.GET)
public String setupForm(Model model) {
Owner owner = new Owner();
model.addAttribute(owner);
return "ownerForm";
} @RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute Owner owner, BindingResult result, SessionStatus status) {
new OwnerValidator().validate(owner, result);
if (result.hasErrors()) {
return "ownerForm";
}
else {
this.clinic.storeOwner(owner);
status.setComplete();
return "redirect:owner.do?ownerId=" + owner.getId();
}
}}
你可以看看最新版的spring里的petclinic例子。
1你可以不配置这两项内容,并且你即使配置了的话,转到哪个页面还是由你控制的
2当第一次输入/xxx。do的时候,进入controller的操作你完全可以实现formBackingObject(HttpServletRequest request)这个方法来处理一些东西,例如向request里放入一些你要用到的对象实例等等如我要添加一个职员,则先需要获得到本公司的部门信息,这样初始化好部门信息,才能将职员添加到某个部门里边去你所说的以get方式进入controller,目前我没有实现,但是formview是可以不设置的。。
不喜欢用注解,呵呵,个人习惯吧~~
用referenceData的话,即要写用referenceData(),还要写onSubmit(),我就是想把GET和POST合在一起
使用SimpleFormController,formView是必须要设置的啊,要不就提示找不到页面,你是怎么做才可以不用设置呢?用SimpleFormController是为了command,表单数据绑定啊,AbstractController没有吧?你的程序里没有GET进Controller的需求?