对于web开发中,常用到从一个页面向另一个页面传值,下面是几种常用的传值方法

1.在struts2框架下进行的开发中,常用的一种方法

 
  
  1. <input type="hidden" value="<%=rb.getRoomId()% >" name="roomId"

 

在这个方法中,是利用隐藏域来传递值的(例如要传递表的主键值),设置表单元素的name属性值为该值在bean类中的属性名,同名。在action中获取时,只需使类实现ModelDriven接口即可,实现其中的方法:getModel,例如;

 

 
  
  1. public void RoomManageAction extends ActionSupport implements ModelDriven<RoomBean>  
  2. private RoomBean rb=new RoomBean();  
  3. public RoomBean getModel()  
  4. {  
  5.     return rb;  
  6. }  
  7.  

在之后的使用时,就可以直接用已创建的RoomBean类的对象rb直接getter其中的属性值了。

2.上面的情况虽然好用,但是在一个表单中有多个隐藏的hidden的value时就不可用了,因为这样提交到服务器端的是一个值的集合,无法取出其中的一个值。

这时就应该避免使用submit来提交表单,无论是submit按钮,还是调用submit()方法提交。

推荐这时用Dom的location对象来进行页面跳转

location有三个属性可以完成此操作:

1)location.href=""

 

 
  
  1. <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()

 

 
  
  1. <input type="button" value="删除" οnclick="location.replace('room_roomDel.action?roomId=<%=rb.getRoomId()%>')"/> 

也可以实现跳转传值的功能

3)location.assign()

 

 
  
  1. <input type="button" value="修改" οnclick="location.assign('room_chuanDi.action?roomId=<%=rb.getRoomId()%>')"/>