一个最容易的SimpleFormController使用
一个最简单的SimpleFormController使用
User
public class User {
private int id;
private String userName;
//省掉了getter和setter方法,用的时候要加上
}
FormAction
public class InFormAction extends SimpleFormController{
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
*/
@Override
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
User user = (User)command;
ModelAndView mav=new ModelAndView(getSuccessView());
mav.addObject("user",user);
return mav;
}
@Override
protected Object formBackingObject(HttpServletRequest request) throws Exception {
User user = new User();
if(null==request.getParameter("id")) {
return user;
}
return request;
}
}
添加用户流程
第一: <a href="infoForm.do">添加用户</a> 点击该链接,会根据infoForm.do找到dispatcherContext.xml里所对应的一个FormAction
配置如下:<bean name="/infoForm.do" class="com.edu.view.console.InFormAction">
<!--添加页面-->
<property name="formView" value="addInfoForm"/>
<!--添加成功显示页面 -->
<property name="successView" value="InfoList"/>
</bean>
第二:进入InFormAction,会执行formBackingObject方法,他会返回一个Model给添加页面
第三:此时添加页面会显示,添加用户名,点击确定,又会进入InFormAction,执行formBackingObject(提示这一步就没有不要进入formBackingObject,可是不明白SimpleFormController为什么又进入这一步)
在SimpleFormController方法中有null==request.getParameter("id"),就是判断你是新增还是修改。如果在页面上你传递的URL中存在id参宿,则为修改
SimpleFormController主要作用就是给视图返回数据的(无论是新增还是修改)
第四:走完SimpleFormController,会走onSubmit方法,该方法中的Object command参数就是页面上的数据Model(注意添加用户页面上的属性名字必须跟User里的属性一致,否则会报错),跳转到成功页面
源码参照附近,部署到MyEclipse就可以运行
User
public class User {
private int id;
private String userName;
//省掉了getter和setter方法,用的时候要加上
}
FormAction
public class InFormAction extends SimpleFormController{
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
*/
@Override
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
User user = (User)command;
ModelAndView mav=new ModelAndView(getSuccessView());
mav.addObject("user",user);
return mav;
}
@Override
protected Object formBackingObject(HttpServletRequest request) throws Exception {
User user = new User();
if(null==request.getParameter("id")) {
return user;
}
return request;
}
}
添加用户流程
第一: <a href="infoForm.do">添加用户</a> 点击该链接,会根据infoForm.do找到dispatcherContext.xml里所对应的一个FormAction
配置如下:<bean name="/infoForm.do" class="com.edu.view.console.InFormAction">
<!--添加页面-->
<property name="formView" value="addInfoForm"/>
<!--添加成功显示页面 -->
<property name="successView" value="InfoList"/>
</bean>
第二:进入InFormAction,会执行formBackingObject方法,他会返回一个Model给添加页面
第三:此时添加页面会显示,添加用户名,点击确定,又会进入InFormAction,执行formBackingObject(提示这一步就没有不要进入formBackingObject,可是不明白SimpleFormController为什么又进入这一步)
在SimpleFormController方法中有null==request.getParameter("id"),就是判断你是新增还是修改。如果在页面上你传递的URL中存在id参宿,则为修改
SimpleFormController主要作用就是给视图返回数据的(无论是新增还是修改)
第四:走完SimpleFormController,会走onSubmit方法,该方法中的Object command参数就是页面上的数据Model(注意添加用户页面上的属性名字必须跟User里的属性一致,否则会报错),跳转到成功页面
源码参照附近,部署到MyEclipse就可以运行