我是 JSF 世界的新手,请帮助我在页面中生成一个弹出窗口。
这是我的要求,我将在我的母版页(父级)中有一个链接列表,点击每个链接我需要显示一个包含一些详细信息的弹出窗口,我需要从弹出 mbean 中的 DB 获取这些详细信息。我的弹出窗口中将有几个按钮,并且对于每一个动作,我都会相应地进行数据库操作。我尝试了不同的方法,但都失败了。
我面临的问题是,当第一次弹出加载时它很好,并且可以按预期投射值。但它第二次在 init 函数中显示新值,我无法在屏幕上看到新值,而是显示第一个弹出值。
我是 JSF 世界的新手,请帮助我在页面中生成一个弹出窗口。
这是我的要求,我将在我的母版页(父级)中有一个链接列表,点击每个链接我需要显示一个包含一些详细信息的弹出窗口,我需要从弹出 mbean 中的 DB 获取这些详细信息。我的弹出窗口中将有几个按钮,并且对于每一个动作,我都会相应地进行数据库操作。我尝试了不同的方法,但都失败了。
我面临的问题是,当第一次弹出加载时它很好,并且可以按预期投射值。但它第二次在 init 函数中显示新值,我无法在屏幕上看到新值,而是显示第一个弹出值。
您是否检查过您的 faces-config.xml 文件以确保您的 bean 在请求范围内?
<managed-bean-scope>request</managed-bean-scope>
如果您的 bean 在会话或应用程序范围内,则每次刷新页面时都不会重新创建 bean,因此 bean 中的值不会改变。
MyFaces Orchestra支持开箱即用的多窗口应用程序。
似乎与我有关的缓存,但请检查以下内容:
了解您如何显示弹出窗口以及是否使用某些 JSF 组件来执行此操作会很有用。如果您只是显示一个隐藏的 div(或您在母版页加载时加载一次的任何内容),您可能不会再次呈现该 div,因此数据不会被实现。
我不是 JSF 的大程序员,但我想你需要 JavaScript 来触发点击事件的弹出窗口。JSF 是一个服务器端 Java 框架,所以它可能无法打开一个新窗口。我不确定这个答案. 以前用这个链接学习JSF思想:http ://www.javapassion.com/handsonlabs/jsfsimpleapps/#Exercise_1
不太确定它是否是标准的 JSF(我很确定它实际上不是),但你应该在你的支持 bean 中有一个 isPostBack() 方法,它可以让你知道你是否是第一次加载页面或者在一个动作之后重新加载它;如果您可以使用 isPostBack() 方法,您将能够仅在第一页加载时从数据库加载值,而不会在操作后覆盖修改后的值。
所以(如果我正确理解您的问题)问题是第二次修改后的 bean 值没有进入前端?
我很惊讶这种变化取决于它是否在弹出窗口中。
一些想法:
http://localhost:8080/myApp/myPopupURL
?#{name.javaBeanField}
对吗?)请求或会话范围?目前我没有一个有效的 JSF 设置,但如果我这样做了,我会尝试创建一个带有链接的单个 JSF 页面。该链接将打开一个指向静态 URL 的弹出窗口(如上面的示例)。静态 URL 将映射到一个非常简单的 mbean,它做了一些简单的事情,比如显示一个 int,它是一个介于 1 和 100 万之间的随机数。
让这项工作至少可以排除其他任何错误的可能性。我有时会遇到 JSF 随机吃异常和使用旧值刷新页面的问题(因为生命周期没有完成)。