[code="java"]package com.examp.ch23;
import Java.util.HashMap;
import Java.util.Map;
import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class LoginController extends SimpleFormController{
//继承SimpleFormController类
private Logger logger = Logger.getLogger(this.getClass().getName());
private String viewPage;
protected ModelAndView onSubmit(Object command)
//在onSummit()方法中处理用户请求
throws Exception {
LoginBean loginbean = (LoginBean)command;
Map model = new HashMap();
model.put("userName", loginbean.getUserName());
//将loginbean中的userName存入model
ModelAndView mv = new ModelAndView(getViewPage(),model);
return mv;
}
public void setViewPage(String viewPage){ //
调用该方法给属性viewPage赋值
this.viewPage = viewPage;
}
public String getViewPage(){ //调用该方法获取viewPage属性
return this.viewPage;
}
} [/code]
控制器代码如上,不理解的地方:
1.[code="java"]protected ModelAndView onSubmit(Object command)[/code]
请问 onSubmit传入的是个什么对象
2.[code="java"]LoginBean loginbean = (LoginBean)command[/code]
这是创建一个loginbean实例吗,不理解
这个例子的出处:http://book.51cto.com/art/200909/154457.htm。
里面有这个的完整代码。
找Bean的问题应该是框架自己内部去实现的事情,就跟struts分发action一样,它怎么知道你要响应哪个action。这是交给servlet容器去分配的 :D
其实当你提交表单的时候,后台就相应onSubmit方法,而该方法里面的参数就是你前台传过来的LoginBean对象。[code="java"]LoginBean loginbean = (LoginBean)command [/code]这句只不过是把传过来的command强制转换一下,可以调用该实体里面的方法而已。
onSubmit的参数是
里面的字段构成的LoginBean对象。
LoginBean loginbean = (LoginBean)command
这个就是把它转型成LoginBean。
不知道这个是什么版本的spring,看着很古老的controller,建议学2.5以后的版本,最好是3.
[code="java"]
[/code]struts2里面这样就能知道是哪个Bean了,不知道你前台代码怎么写的。贴出来。 :D