【问题标题】:JSF & Facelets FlowJSF 和 Facelets 流
【发布时间】:2008-10-31 02:29:47
【问题描述】:

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

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

【问题讨论】:

    标签: java ajax jsf jakarta-ee facelets


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您使用的是Spring integration(另请参阅here),这很容易。

      在您的支持 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 的属性。

      希望这一切都清楚了!

      【讨论】:

        【解决方案3】:

        你写(加上我的重点):

        我对我们的数据库进行的每个调用当前都是在某个操作之后进行的 已由表单提交触发。这段代码应该去哪里 如果还没有提交表单,我该如何触发呢?一个 代码 sn-p 真的可以帮到我!

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

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

        【讨论】:

        • 抱歉,我明白你为什么会这样想。我的错。我希望在页面加载时设置这些值,无需任何用户交互。
        • 您的意思是在用户打开表单后分阶段加载,对吗?为什么导致表单加载的事件不能开始触发额外的 ajax 调用?
        猜你喜欢
        • 2010-12-28
        • 2016-10-30
        • 2014-07-16
        • 2011-03-28
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        相关资源
        最近更新 更多