1

我有一个动态 Facelets 页面,需要在页面加载时显示来自数据库的信息。在流程中的这一点上,还没有任何表单提交。我能找到的每个 JSF 示例仅在下一页显示带有动态结果的表单提交。

我对数据库的每次调用当前都是在表单提交触发操作之后进行的。如果没有表单提交,这段代码应该去哪里,如何触发它?一个代码片段真的可以帮助我!

4

3 回答 3

2

您应该能够在托管 bean 的构造函数(或懒惰地在您的访问器之一)中进行初始化工作。

于 2008-10-31T09:49:08.793 回答
1

如果您使用的是Spring 集成(另请参见此处),这很容易。

在您的支持 bean 中,只需使用以下内容:

public class BackingBean implements InitializingBean
{
    public void afterPropertiesSet()
    {
        loadInitialData();
    }
}

如果您没有与 Spring 集成,则有两种选择:

  1. 在类构造函数中加载初始数据;
  2. 在您的faces-config.xml中,您可以设置要注入的属性。保证按照配置文件中指定的顺序设置属性。因此,只需创建一个虚拟属性,然后在该方法中加载您的默认数据。即创建一个方法public void setLoaded(boolean loaded) { loadInitialData(); },并在您的 faces-config.xml 中将“加载”设置为该支持 bean 的属性。

希望这一切都清楚了!

于 2008-10-31T09:19:12.113 回答
0

你写(加上我的重点):

我对数据库的每次调用当前都是在表单提交触发操作之后进行的。如果没有表单提交,这段代码应该去哪里,如何触发它?一个代码片段真的可以帮助我!

在我看来,您想在提交表单之前从数据库中检索信息。

在我看来,您想要进行 Ajax 调用来查询数据库。Ajax 调用可以在与表单提交事件不同的事件上触发。这可能需要使用 Javascript 而不是 Faces 框架。

于 2008-10-31T03:09:22.437 回答