jsp部分 : 就是一个form表单,表单参数有 name , createDate, Description 这三个参数
pojo 部分: 一个实体类client 中有这三个属性
controller部分代码:
@RequestMapping("clientAdd")
public String clientAdd(Client client){
System.out.println(client.getName()+"=============000");
return "redirect:../../api/go/login";
}
问题: 为什么 打印出来的名字为空,也是说没有把直set到client中 ,错误在那里,因该怎样解决 ,请给位大神棒棒忙 ,着急中
set .get 有的
追答client有没有匹配好。没有的话这个对象空的。怎么会有东西
追问是set和get方法的名字匹配吗? ,如果是的话,方法名式匹配好了的 如:setName(String name)
追答你网页是不是有一个client的东西,然后把这些数据传到你类里的client对象,你中间通过什么?annotation还是xml还是其他方式。如果没有中间这个过渡,你类里的client永远时空。
追问我的网页里没有一个client ,是一个普通的form表单 ,至于中间经过什么,就是spring mvc 的一些配置 ,中间经过什么不是很懂 ,
试过了 ,还是没有数据进去 ,
追答楼上说的是对的,需要一个中间层来交互,其中一种实现方式(放父类里),自己显式调用绑定
/**
* Spring MVC
*
* @return
* @see #preBind(HttpServletRequest,Object,ServletRequestDataBinder)
*/
protected BindingResult bindObject(HttpServletRequest request,
Object command) throws Exception {
ServletRequestDataBinder binder = createBinder(request, command);
preBind(request, command, binder);
binder.bind(request);
Validator[] validators = getValidators();
if (validators != null) {
for (Validator validator : validators) {
if (validator.supports(command.getClass())) {
ValidationUtils.invokeValidator(validator, command, binder
.getBindingResult());
}
}
}
return binder.getBindingResult();
}
这个中间层需要自己写吗? 不会自动注入吗?
追答刚才试了下,是可以正常反射到表单里面的值的,检查下你的配置和form表单里面的name命名是否一一对应,给个参考你:
htt“去掉我”p://www.cnblogs.com/xd502djj/archive/2013/08/08/3245485.html
能否给我看看你的配置 可以吗? 应该是配置错误导致的
追答关键配置应该就这几个,mvc响应模式根据自己需要来,我用的ControllerClassNameHandlerMapping
谢谢
本回答被提问者采纳直接复直是可以的 ,但是如果参数表多,这样感觉代码不简练