gpt4 book ai didi

java - JSF preRenderView 调用次数过多

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:45 26 4
gpt4 key购买 nike

我的一个页面/bean 有它的 preRenderView事件在第一页加载时触发两次,然后 2 + n每次回发的次数,其中 n是已发生的回发数(包括当前回发数)。

在这里阅读了一些其他帖子后,我搬家了<f:event type="preRenderView" listener="myBean.preRenderView"/><f:metadata/>之外这减少了 preRenderView 的数量一个人打电话。也就是说,它在整个页面加载和 1 + n 时被调用一次。每次回发的时间。我什至试图移动 <f:event/><f:view/> 之外标记, 但没有效果。

我不确定这是否相关:页面使用模板:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:fb="http://www.facebook.com/2008/fbml">
<f:view contentType="text/html">
<ui:insert name="metadata"/>
<h:head>
<!-- Some stuff here -->
<ui:insert name="content"/>
<!-- More stuff here -->
</h:head>
<h:body>
</h:body>
</f:view>
</html>

以及页面的相关部分:

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title></title>
</h:head>
<h:body>
<ui:composition template="/WEB-INF/templates/myLayout.xhtml">
<ui:define name="windowTitle">My Page</ui:define>
<ui:define name="metadata">
<f:event type="preRenderView" listener="#{myBean.preRenderView}"/>
</ui:define>
<ui:define name="content">
<!-- Some content here -->
<h:panelGroup id="reRenderable" layout="block">
<!-- More content here -->
<h:form prependId="false">
<h:outputLabel for="mySelector" value="Item:"/>
<h:selectOneMenu id="mySelector"
value="#{myBean.item}"
converter="#{myConverter}"
validator="#{itemActiveValidator.validate}">
<f:selectItems value="#{myBean.myItems}"/>
<f:ajax render=":reRenderable"/>
</h:selectOneMenu>
</h:form>
<!-- More content here -->
</h:panelGroup>
<!-- More content here -->
</ui:define>
</ui:composition>
</h:body>
</html>

最佳答案

它看起来像是另一个 Mojarra 错误:JAVASERVERFACES-2162

我按如下方式应用了解决方法并且它有效:

<ui:define name="metadata">
<f:metadata>
<f:viewParam name="dummy"/>
<f:event type="preRenderView" listener="#{myRecordsBean.preRenderView}"/>
</f:metadata>
</ui:define>

剩下要做的就是将 dummy 推到模板中,使使用它的页面免受这种污染。

关于java - JSF preRenderView 调用次数过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com