내 Mojarra 2.1.6 웹 응용 프로그램에 문제가 있습니다. @ViewScoped
관리 빈을 사용하여 개발 중이며 각 빈은 xhtml 페이지에 연결되어 있습니다. 이 페이지는 PARAMS 그 방법으로 콩을 초기화 한 후 일부 보기를 받고있다 : 당신이 볼 수 있듯이Scoped Bean preRenderView 메소드가 여러 번 호출되었습니다.
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui"
template="/templates/general_template.xhtml">
<ui:define name="metadata">
<f:metadata>
<f:viewParam id="user" name="user"
value="#{navegableUserData._ParamUser}" />
<f:viewParam id="NavIndex" name="NavIndex"
value="#{navegableUserData._QueueIndex}" />
<f:event type="preRenderView"
listener="#{navegableUserData.initialize}" />
</f:metadata>
<h:message for="user" />
</ui:define>
<ui:define name="general_content">
<p:outputPanel autoUpdate="false" id="Datos_Loged" name="Datos_Loged"
layout="block">
<h:form id="SystemUserForm">
<ui:include
src="/system/manage_user/content/edit_user/system_user_data/system_user.xhtml">
<ui:param name="manager" value="#{navegableUserData}" />
</ui:include>
</h:form>
</p:outputPanel>
</ui:define>
, 내 페이지가 보이는 일반적인 템플릿에 중첩 된 : 나는 그런 Primefaces 테이블 필터링 등의 아약스 요청을 할 때
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui">
<h:head>
<meta http-equiv="Pragma" CONTENT="no-cache"></meta>
<meta http-equiv="cache-control" content="no-cache"></meta>
<meta http-equiv="Expires" CONTENT="-1"></meta>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-15" />
<h:outputStylesheet library="css" name="prime_styles.css" />
<h:outputScript library="js" name="prime_translations.js" />
</h:head>
<h:body>
<ui:insert name="metadata" />
<o:importConstants
type="com.company.system.view.beans.NavigationResults" />
<!-- More stuff -->
문제가 온다. 내 백업 bean이 다시 작성되지는 않지만 <f:event type="preRenderView" listener="#{navegableUserData.initialize}" />
이 다시 호출됩니다.
뷰 매개 변수를 기반으로 데이터를로드하고 있으며 페이지가 처음 렌더링 될 때만 실행하는 방법이 필요합니다. 나는 태그를 사용하여 매우 조심스러워했으며 일반 템플릿에서만 사용했고 뷰 빈 속성은 태그에 연결되어 있지 않기 때문에 문제가 아닌 것으로 생각합니다. 또한 모든 페이지에서이 문제가 발생하므로 특정 백킹 빈의 문제가 아닌 것으로 생각합니다. 이 아약스 요청시에만 발생하는 경우
당신이 있습니까 아약스 사용? – SJuan76
primefaces의 버전은 무엇입니까? 문제가있을 수 있습니다. 최신 버전인지 확인하십시오. 또한 Mojarra 2.1.14 (2.1.15/16로 업그레이드해야합니다. Primeface와 함께 문제가있어서 추천하지 않는 이유입니다.) 이미이 버그로 인한 것임을 배제해야합니다. 결정된. – Gimby
Prime 3.4.2 및 Mojarra 2.1.14를 사용해 보았지만 여전히 동일한 문제가 있습니다. Ajax 요청은 특별히 자체적으로 수행되는 것이 아니라 PF dataTable 필터에 의해 수행됩니다. –