关于Struts2 中action接收不到 网页传值问题

做struts2作业写书籍的增删改查,运用JDBC连接数据库,在写到通过id删除一条记录时,遇到了下列问题
代码如下,模型就不上代码了


			
			
ID书名价格作者出版社
${map.id} ${map.bookname} ${map.bookprice} ${map.bookauthor} ${map.bookpublisher} 修改 删除
点击删除超链接,交给delete_BookAction处理,下面是Action的处理方法
public class BookAction extends ActionSupport {
	BookService bookservice = new BookService();
	private Book book;
	private int id;
	private List booklist;

	
	public List getBooklist() {
		return booklist;
	}

	public void setBooklist(List booklist) {
		this.booklist = booklist;
	}

	public Book getBook() {
		return book;
	}

	public void setBook(Book book) {
		this.book = book;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	/**
	 * 
	 * @return
	 */
	public String prepareDeleteBook(){
		
		ActionContext.getContext().put("booklist", new BookService().listBooks());
		return "showDeleteBookList";
	}
	
	/**
	 * 
	 * @return
	 */
	public String prepareUpdateBook(){
		book = bookservice.getBook(id);
		//ActionContext.getContext().put("booklist",bookservice.getBook(id));
		return "showUpdateBookList";
	}
	
	
	public String addBook(){
		System.out.println(book.getBookauthor());

		bookservice.insertBook(book);
		ActionContext.getContext().put("booklist", new BookService().listBooks());
		System.out.println("添加成功");
		return "addbookOK";
	}
	
	public String deleteBook(){
		bookservice.deleteBook(id);
		System.out.println(id);
		return "deleteOK";
	}
	
	public String updateBook(){
		ActionContext ac = ActionContext.getContext();

		bookservice.updateBook(book);
		return "updateOK";
	}
	
	public String selectBook(){
		//bookservice.listBooks();
		ActionContext.getContext().put("booklist", new BookService().listBooks());
		return "selectOK";
	}
	
	
	//此处要实现ModelDriven接口
//	@Override
//	public Book getModel() {
//		return book;
//	}

}
struts.xml配置文件

		
		
			f:
			/index.jsp		
			/user/welcome.jsp
			/regist.jsp
			
		
			/user/selectBook.jsp
			select_BookAction
			
			
			select_BookAction
			
			/user/preUpdate.jsp
			/user/updateBook.jsp
			select_BookAction
			
		
我用的是通配符,delete_BookAction对应deleteBook方法
开始我用的模型驱动,结果一直实现不了,我在deleteBook方法中输出id结果id为0.我才知道Action并没有接收到id参数,后来网上看了许多关于Action接收值的问题,也没有找出来问题到底出在哪,
之后想到是不是,页面上id的getter,setter方法覆盖了模型驱动获取到的id,我将模型驱动代码删除,结果OK了,得出结论,用模型驱动时,Action页面上声明的对象值会覆盖模型中获取的对象的值,而网页传过去的值传给了模型 ,而并没有传给声明的对象,所以Action是获取不到值的。

你可能感兴趣的:(关于Struts2 中action接收不到 网页传值问题)