我是JSF世界的新手,请帮助我在页面中生成一个弹出窗口。
这是我的要求我将在我的母版页(父母)中找到一个链接列表,点击我需要显示弹出窗口的每个链接,其中包含一些细节,我需要在弹出窗口中从DB获取的MBean。我的弹出窗口中会有几个按钮,对于每一个动作,我将相应地进行数据库操作。我尝试了不同的方法而且失败了。
我面临的问题是第一次弹出加载时它很好并按预期投射值。但是第二次它在init函数中显示了新值,我无法在屏幕上看到新值,而是显示第一个弹出值。
答案 0 :(得分:1)
您是否检查过faces-config.xml文件以确保您的bean处于请求范围内?
<managed-bean-scope>request</managed-bean-scope>
如果bean在会话或应用程序范围内,则每次刷新页面时都不会重新创建bean,因此bean中的值不会更改。
答案 1 :(得分:0)
所以(如果我正确理解你的问题)问题是第二次修改后的bean值没有进入前端?
我很惊讶这会根据它是否在弹出窗口中而改变。
一些想法:
http://localhost:8080/myApp/myPopupURL
?#{name.javaBeanField}
访问的java对象吗?)请求或会话作用域?我目前没有正常工作的JSF设置,但如果我这样做,我会尝试使用链接创建一个单独的JSF页面。该链接将打开一个指向静态URL的弹出窗口(如上例所示)。静态URL将映射到一个非常简单的mbean,它做了一些简单的事情,比如显示一个介于1到100万之间的随机数的int。
让它工作至少可以排除其他任何错误的可能性。我有时会遇到JSF随机吃异常并使用旧值刷新页面的问题(因为生命周期没有完成)。
答案 2 :(得分:0)
不确定它是否是标准的JSF(实际上我很确定它不是),但你的后台bean中应该有一个isPostBack()方法,它可以让你知道你是否正在加载页面第一次或在行动后重新加载;如果您可以使用isPostBack()方法,则只能在第一页加载时从DB加载值,而不会在操作后覆盖修改后的值。
答案 3 :(得分:0)
似乎与我相关的缓存,但请检查以下内容:
答案 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支持开箱即用的多窗口应用程序。