Một trang/bean của tôi có sự kiện preRenderView
được kích hoạt hai lần trên lần tải trang đầu tiên sau đó 2 + n
lần cho mỗi postback, trong đó n
là số lượng postback (bao gồm cả hiện tại).JSF preRenderView được gọi là quá nhiều lần
Sau khi đọc một vài bài đăng khác ở đây, tôi đã di chuyển <f:event type="preRenderView" listener="myBean.preRenderView"/>
bên ngoài <f:metadata/>
và điều đó làm giảm số lượng cuộc gọi preRenderView
. Tức là, nó được gọi một lần khi tải trang đầy đủ và 1 + n
lần cho mỗi lần đăng lại. Tôi thậm chí đã cố gắng di chuyển thẻ <f:event/>
bên ngoài <f:view/>
, nhưng nó không có hiệu lực.
Tôi không chắc chắn nếu điều này là có liên quan: Các trang sử dụng một mẫu:
<!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>
Và các bit tương ứng của trang:
<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>
Đó là một lỗi khó chịu :(Nếu bạn, hoặc bất cứ ai khác, đang bận tâm của thành viên này, hãy bỏ phiếu cho các lỗi. –
Đã đã làm. Tôi đến qua lỗi cá móm cách rất rõ ràng với sự gia tăng tần số thời gian gần đây. Nó không phải –
Bạn nói đúng, mặc dù thành thật mà nói, tôi đang gặp phải những lỗi rõ ràng trong các phần mềm tôi sử dụng (Hibernate, Firefox, tên bạn) it) :( –