JSF弹出新窗口的操作

robbyqi 2010-06-24 02:15:55
  大家好,我现在接了一个给老系统换框架的工作。客户要求使用的是JSF+SPRING框架,可我发现这个jsf我一点也不熟悉而且也不好用。题外话了,下面说下我的问题。
  现在是要打开一个新窗口,但是又要传值过去。通过传过去的参数到数据库里去取值,再将取到的值展现在新打开的窗口里。在老的框架里,他们是这样写的:

var code = window.document.frmInquiry.code.value;
lfnNewWindowMedium('project?Action=FindCode&hdnUserId='+document.frmTermsInquiry.hdnUserId.value+'&Code='+code,'PopUP');



lfnNewWindowMedium 就是一个打开新窗口的window.open 的function,  他们是打开一个action,并且把参数传进action中进行操作,在action里返回一个页面,最后就是打开那个页面并将结果展示出来。
   可是我在jsf里应该怎么做呢???   我也想像他们那样传一个action进去,但是jsf里没有action。。。。我该怎么样做才能先去后台java里操作数据,然后再打开新页面呢????
   不知道我有没有把意思表达清楚。谢谢大家了!!!

  
...全文
367 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
robbyqi 2010-07-30
  • 打赏
  • 举报
回复
忘了结贴了。 总之谢谢各位的参与!
Mars_Yuan 2010-07-14
  • 打赏
  • 举报
回复
可以用richface与ajax 的a4j:commandbutton,其中有一个oncomplete属性,意思是先执行action,然后再执行oncomplete中的js代码。 比如
<a4j:commandButton title="Select Ship To Location" action="#{content.loadShipLocation}" image="/images/lookup.gif" oncomplete="javascript:lfnNewWindowMedium('/apss/pages/request/findshiptolocation.faces','ShipToLocationLookUp')"/>
就是先执行action中的loadShipLocation方法,执行完成后再执行javascript去打开一个新窗口

新窗口中的mbean要和获取数据的mbean是一个实例才可以吧,不然数据无法显示在新窗口的。
不过可以用session来保存以后取出
Mars_Yuan 2010-07-14
  • 打赏
  • 举报
回复
按我们的做法
是在新开窗口的url中使用参数 也就是url?x=1 这样的方式传参数的
然后 在mbean 也就是后台bean 初始化的时候 用request.getParameter("x")方法获取url中的参数x的值,然后用这个值获取数据库中的数据,这些都是在后台bean的构造函数里面操作的
当然也可以设置一个后台bean的property来保存这个值,再 在 get方法中用这个值进行数据库操作。
robbyqi 2010-07-14
  • 打赏
  • 举报
回复
什么是action返回的值? 该action应该是void型的,因为新窗口的地址已经在js里指定了。如果你是指action中的一些变量的值的话,那就很平常的在新窗口中用jsf标签取值就可以了。比如
public void loadShipLocation(){

txtAddress = pymtServ.getAddress();
}

在新窗口的jsp中就用 #{pymtBean.txtAddress}取值就行了。
licip 2010-07-14
  • 打赏
  • 举报
回复
那执行这个动作:action="#{content.loadShipLocation}" 返回的值可以到新窗口中获取吗?
robbyqi 2010-07-14
  • 打赏
  • 举报
回复
解决了,  可以用richface与ajax 的a4j:commandbutton,其中有一个oncomplete属性,意思是先执行action,然后再执行oncomplete中的js代码。 比如
<a4j:commandButton title="Select Ship To Location" action="#{content.loadShipLocation}" image="/images/lookup.gif" oncomplete="javascript:lfnNewWindowMedium('/apss/pages/request/findshiptolocation.faces','ShipToLocationLookUp')"/>
就是先执行action中的loadShipLocation方法,执行完成后再执行javascript去打开一个新窗口
zw61911169 2010-06-25
  • 打赏
  • 举报
回复
你应该先好好了解下jsf的工作原理。。。不好意思。。不用jsf好多年。。。
robbyqi 2010-06-25
  • 打赏
  • 举报
回复
ding yi xia

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧