在JSF中生成弹出窗口

时间:2008-12-20 10:40:48

标签: jsf

我是JSF世界的新手,请帮助我在页面中生成一个弹出窗口。

这是我的要求我将在我的母版页(父母)中找到一个链接列表,点击我需要显示弹出窗口的每个链接,其中包含一些细节,我需要在弹出窗口中从DB获取的MBean。我的弹出窗口中会有几个按钮,对于每一个动作,我将相应地进行数据库操作。我尝试了不同的方法而且失败了。

我面临的问题是第一次弹出加载时它很好并按预期投射值。但是第二次它在init函数中显示了新值,我无法在屏幕上看到新值,而是显示第一个弹出值。

7 个答案:

答案 0 :(得分:1)

您是否检查过faces-config.xml文件以确保您的bean处于请求范围内?

<managed-bean-scope>request</managed-bean-scope>

如果bean在会话或应用程序范围内,则每次刷新页面时都不会重新创建bean,因此bean中的值不会更改。

答案 1 :(得分:0)

所以(如果我正确理解你的问题)问题是第二次修改后的bean值没有进入前端?

我很惊讶这会根据它是否在弹出窗口中而改变。

一些想法:

  • 大概是当你打开这个弹出窗口时,你只是访问一个页面,即http://localhost:8080/myApp/myPopupURL
  • 是mbean(当你说mbean是指你使用#{name.javaBeanField}访问的java对象吗?)请求或会话作用域?
  • 你在做什么才能得到这个结果?您是否单击弹出链接,然后再次单击该链接(预计已打开的弹出窗口将刷新)?或者您是否单击链接,关闭弹出窗口并再次单击链接?或者您是单击该链接然后刷新弹出窗口?

我目前没有正常工作的JSF设置,但如果我这样做,我会尝试使用链接创建一个单独的JSF页面。该链接将打开一个指向静态URL的弹出窗口(如上例所示)。静态URL将映射到一个非常简单的mbean,它做了一些简单的事情,比如显示一个介于1到100万之间的随机数的int。

让它工作至少可以排除其他任何错误的可能性。我有时会遇到JSF随机吃异常并使用旧值刷新页面的问题(因为生命周期没有完成)。

答案 2 :(得分:0)

不确定它是否是标准的JSF(实际上我很确定它不是),但你的后台bean中应该有一个isPostBack()方法,它可以让你知道你是否正在加载页面第一次或在行动后重新加载;如果您可以使用isPostBack()方法,则只能在第一页加载时从DB加载值,而不会在操作后覆盖修改后的值。

答案 3 :(得分:0)

似乎与我相关的缓存,但请检查以下内容:

  • 你调试过了吗? bean中的正确值;
  • 你确定它是豆的形式吗? 获取值;
  • 您确定浏览器会点击 服务器第二次?和
  • 您是否解析了日志(并激活了它们!)并确保没有错误?

答案 4 :(得分:0)

了解如何显示弹出窗口以及是否使用某些JSF组件来执行此操作会很有用。如果您只是显示一个隐藏的div(或者在加载母版页时加载的任何内容),您可能无法再次渲染该div,因此数据未实现。

答案 5 :(得分:0)

我不是JSF的大程序员,但我猜你需要JavaScript才能在click事件上触发弹出窗口.JSF是一个服务器端Java框架,所以它可能无法打开一个新窗口。我不确定对于这个答案。曾经使用这个链接来学习JSF思想:http://www.javapassion.com/handsonlabs/jsfsimpleapps/#Exercise_1

答案 6 :(得分:0)

MyFaces Orchestra支持开箱即用的多窗口应用程序。