spring3 页面form标签binding错误。**Neither BindingResult***

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'book' available as request attribute

 

昨日在学习spring3的时候,在做一个页面传送对象到后台,也就是说页面binding对象,使用到

<form:form method="POST" modelAttribute="book">
  <form:input path="name"/>
  <form:input path="author"/>
  <input type="submit" value="Post">
</form:form>

 spring的form标签的modelAttribute属性绑定对象Book。结果就出现上述错误,但是由于与本人阅读文档的能力有限,于是看了看文档,马上GOOGLE,结果折腾了一天,终于找到答案.

最后在看看上述错误提示,突然想起是不是要在进入此页面的时候,必须要创建一个book对象,将它放到页面的context中,让spring来注入,于是在controller中添加了多了个RequestMethod.GET方法,用来创建一个book对象将它放到context中,这个context我不知道如何说,这个有点类似struts的context,是用来放值的。

@Controller
@RequestMapping("/searchbooks")
public class SearchBookController {
	private IBookService bookService;
	
	@Resource(name="bookServiceImpl")
	public void setBookService(IBookService bookService) {
		this.bookService = bookService;
	}
	
	@RequestMapping(method=RequestMethod.POST)
	public String findBooks(@ModelAttribute("book") Book book,BindingResult result,
			Model model){
		System.out.println("Book name:"+book.getName()+" author: "+
				book.getAuthor()+" info:"+book.getInfo());
		book.setAuthor(null);
		List<Book> books = bookService.findByEntity(book);
		model.addAttribute("books", books);
		return "bookresult";
	}
//在后来再增加下面的方法,用来转到使用到spring form标签的jsp页面。	
	@RequestMapping(method=RequestMethod.GET)
	public String searchBooks(Model model){
		Book book = new Book();
		model.addAttribute("book",book);
		return "searchbooks";
	}
}

 

总结,在进入spring form标签设定binding对象页面前必须有是有一个需binding的对象放在context中(类似struts的context stack和value stack),spring才能binding。不像struts的页面自动binding。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值