当前位置: 首页 > 知识库问答 >
问题:

每当Facelet页面加载时,在支持bean中运行代码块

邹英发
2023-03-14

我正在使用JSF构建一个网站。我想在每次加载Facelet页面时运行一段代码,我需要使用会话范围支持bean。我尝试使用backingbean的构造函数来运行代码块,但它只是第一次运行,我使用了以下代码

<c:forEach var="p" items="#{statusBean.statusList}"
                        varStatus="loop">

由于statusBean是会话作用域,因此它在加载页面时第一次运行构造函数。

当页面加载时(不仅仅是第一次加载),是否还有其他方法可以运行代码块?

共有1个答案

鲜于宏义
2023-03-14

实现这一点有不同的方法。首先,您必须定义“Facelets页面加载时”的含义。我想你的意思是在页面呈现之前。

预渲染视图事件

使用JSF 2. x,最简单的方法是为PreRenderView事件创建一个系统事件监听器。为此,您首先需要在页面中添加一个f: event标记,如下所示:

<f:event type="javax.faces.event.PreRenderViewEvent"
    listener="#{bean.preRenderView}"/>

必须在视图根目录(f:view)上注册PreRenderViewEvent的侦听器。因此f:event必须是f:view的直接子级,如果不使用f:view,则必须是顶级的某个位置。使用模板f:event必须放在保证相同的ui:define中。

在呈现视图之前,将调用listener属性中引用的侦听器方法。该方法可能如下所示:

public void preRenderView(ComponentSystemEvent ev) {
    //Do something
}

@预渲染视图

如果将CDI与MyFaces CODI一起使用,只需使用@PreRenderView注释托管bean方法,就会在呈现页面之前调用该方法。

查看动作

使用JSF2.2(还不是最终版本),您可以使用视图操作在生命周期的不同阶段调用方法。有关详细信息,请参阅我在JSF2.2视图操作上的JSFlive帖子。

您可以在我的GitHub存储库中找到PreRenderView事件的示例并查看操作

 类似资料:
  • 我要求在JSF2.2页面上输入2个输入值。我们正在使用Primefaces控件。然后通过h:command按钮将这些值提交给托管bean方法。 然后,基于这些值,我想将同一JSF页面上的一个单独的输出字段设置为一个特定的值。 因此,我目前的问题是尝试连接一个托管bean,以便它将一个值返回到我的JSF页面上的字段,在本例中,字段名是mgrs。主要的问题是,我要处理的是生成返回值的第三方库,我不确定

  • PrimeFaces 5.0、JSF 2.2、Glassfish 4.1.1、, 我假设我的设置中有些东西没有正确配置,但我不确定该看什么。。。 所以我使用managedbeans来支持JSF页面。在页面上的PrimeFace元素中,如果我使用oncomplete属性,它引用的方法将在页面加载时被调用。我不想让它在每次加载页面时调用这个方法,我也不认为应该这样! 我已经在几页和不同的元素中对此进行

  • 我想调用我的函数main()使用html onload事件和console.log文本导入从另一个(生成Object.js)文件,但当我导入函数,onload事件停止工作和函数main()不再使用。 HTML: 生成对象。js: main.js: 当我尝试控制台时。main()中的log(“text”)可以正常工作,但当我尝试使用导入的函数时却不行。我该怎么做才能解决这个问题? Chrome控制台

  • 在Visual Studio代码中: 我已经正确配置了OpenJDK 14。当我试图运行我的项目时,我收到以下错误:java。lang.UnsupportedClassVersionError:(类文件版本56.65535)是使用不受支持的预览功能编译的。这个版本的Java运行时只识别类文件版本58.65535的预览功能 这个类是一个依赖项,它存储在Nexus存储库中,所有这个项目都是用JDK 1

  • 问题内容: 我正在制作一个由CSS3驱动的简单目标网页。为了使它看起来很棒,有一个隆重的表演: 为了使它更加出色,我添加了一个悬停动画: 但是问题来了!我分配了这样的动画: 一切都很好:飞溅到用户脸上,当他徘徊时有很好的振动。用户模糊后,立即填充,平滑内容突然结束并重复-animation。(这对我来说是合乎逻辑的,但我不希望这样做)没有某种JavaScript类Jiggery Pokery,有什