对于web开发中,常用到从一个页面向另一个页面传值,下面是几种常用的传值方法
1.在struts2框架下进行的开发中,常用的一种方法
- <input type="hidden" value="<%=rb.getRoomId()% >" name="roomId">
在这个方法中,是利用隐藏域来传递值的(例如要传递表的主键值),设置表单元素的name属性值为该值在bean类中的属性名,同名。在action中获取时,只需使类实现ModelDriven接口即可,实现其中的方法:getModel,例如;
- public void RoomManageAction extends ActionSupport implements ModelDriven<RoomBean>
- private RoomBean rb=new RoomBean();
- public RoomBean getModel()
- {
- return rb;
- }
在之后的使用时,就可以直接用已创建的RoomBean类的对象rb直接getter其中的属性值了。
2.上面的情况虽然好用,但是在一个表单中有多个隐藏的hidden的value时就不可用了,因为这样提交到服务器端的是一个值的集合,无法取出其中的一个值。
这时就应该避免使用submit来提交表单,无论是submit按钮,还是调用submit()方法提交。
推荐这时用Dom的location对象来进行页面跳转
location有三个属性可以完成此操作:
1)location.href=""
- <input type="button" value="修改" name="roomId" id="roomId" onClick="location.href='room_chuanDi.action?roomId=<%=rb.getRoomId()%>'">
传递值的时候,在url路径后直接加上需要传递的值,在服务器端action还是用modelDriven的方法来接受值,在struts底层已经将值写入到已经设计好的bean中了。
这样传递的好处是,不会在提交信息传递值的时候将整个表单传递过去,而是只是将需要的值传过去,这样就解决了一个表单中多个hidden都被提交的问题。
2)location.replace()
- <input type="button" value="删除" onclick="location.replace('room_roomDel.action?roomId=<%=rb.getRoomId()%>')"/>
也可以实现跳转传值的功能
3)location.assign()
- <input type="button" value="修改" onclick="location.assign('room_chuanDi.action?roomId=<%=rb.getRoomId()%>')"/>