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

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

<body>
	<table border="1px">

		<tr><th>ID</th><th>书名</th><th>价格</th><th>作者</th><th>出版社</th></tr>
		<c:forEach var="map" items="${booklist}" begin="0" varStatus="st">		
			<tr bgcolor="${st.index % 2 == 1 ? '#EFEFEF' : 'FFFFFF'}">
			<td>${map.id}</td>
			<td>${map.bookname}</td>
			<td>${map.bookprice}</td>
			<td>${map.bookauthor}</td>
			<td>${map.bookpublisher}</td>
			<td><a href="prepareUpdate_BookAction?id=${map.id}">修改</a></td>
			<td><a href="delete_BookAction?id=${map.id}">删除</a></td>
			</tr>
		</c:forEach>
	
	</table>
	<s:debug/>
</body>

点击删除超链接,交给delete_BookAction处理,下面是Action的处理方法
public class BookAction extends ActionSupport {
	BookService bookservice = new BookService();
	private Book book;
	private int id;
	private List<Book> booklist;

	
	public List<Book> getBooklist() {
		return booklist;
	}

	public void setBooklist(List<Book> 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<Book>接口
//	@Override
//	public Book getModel() {
//		return book;
//	}

}
struts.xml配置文件
<action name="*_*Action" class="action.{2}Action" method="{1}{2}">
		
		<!-- User result -->
			<param name="savepath">f:</param>
			<result name="index">/index.jsp</result>		
			<result name="welcome">/user/welcome.jsp</result>
			<result name="input">/regist.jsp</result>
			
		<!-- Book result -->
			<result name="selectOK">/user/selectBook.jsp</result>
			<result name="addbookOK" type="chain">select_BookAction</result>
			
			
			<result name="deleteOK" type="chain">select_BookAction</result>
			
			<result name="showUpdateBookList">/user/preUpdate.jsp</result>
			<result name="showUpdateBook">/user/updateBook.jsp</result>
			<result name="updateOK" type="chain">select_BookAction</result>
			
		</action>
我用的是通配符,delete_BookAction对应deleteBook方法
开始我用的模型驱动,结果一直实现不了,我在deleteBook方法中输出id结果id为0.我才知道Action并没有接收到id参数,后来网上看了许多关于Action接收值的问题,也没有找出来问题到底出在哪,
之后想到是不是,页面上id的getter,setter方法覆盖了模型驱动获取到的id,我将模型驱动代码删除,结果OK了,得出结论,用模型驱动时,Action页面上声明的对象值会覆盖模型中获取的对象的值,而网页传过去的值传给了模型 ,而并没有传给声明的对象,所以Action是获取不到值的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值