보기 매개 변수에서 제공된 값에 따라 페이지의 일부 (이 경우 바닥 글)를 포함하려는 페이지가 있습니다.ui : viewParam에 종속 포함
나는 나의 ViewScoped
백업 콩이 포함되는 바닥 글의 이름을 얻을 수있는 데이터베이스를 쿼리 preRenderView
<f:metadata>
<f:viewParam name="racecode" value="#{displayResults.racecode}" />
<f:event type="preRenderView" listener="#{displayResults.init}" />
</f:metadata>
에 초기화합니다. 그러면 다음과 같은 방식으로 사용됩니다.
<h:panelGroup id="customFooter" display="block">
<ui:include src="#{displayResults.customFooter}" />
</h:panelGroup>
이렇게하면 항상 누락 된 페이지가 표시됩니다. 그러나 수동으로 페이지 이름을 입력하면 작동합니다. ui:include
을 h:outputText
으로 바꾸어도 마찬가지입니다.
나는 그것이 JSF의 단계와 관련이 있고, ui:include
이 완료 될 때 값이 아직 설정되지 않았다는 것을 알고 있습니다. (단계를 읽고 더 잘 이해하는 것이 나의 TODO 목록에있는 것입니다).
질문이 남아 있습니다. 정렬 작업을 어떻게하면 완료 할 수 있습니까? bean이 viewParam을 사용하고, 데이터베이스를 쿼리하고 ui:include
에 해당 값을 사용합니까?
이것은 총체적으로 의미가 있습니다. 나는 종종 베스트 프랙티스와 이것에 관한 것들을 염려한다. (OCD 조금 생각한다.) 이제이 한 페이지로드에 대해 두 개의 빈을로드한다고 가정 해 봅시다. 그러면 데이터베이스에 대한 추가 호출이 생성됩니다. 물론, 나는이 일을하기 위해 필요한 정보를 가지고있다. 현재의'preRenderView'를 완전히 이것으로 바꾸고 모든 것을 한곳에 모으는 것이 낫겠습니까? 또한'@ RequestScoped'가 왜 여기에 있습니까? – blo0p3r
콩을 서로'[@ManagedProperty'] (http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#InjectingManagedBeansInEachOther)로 삽입 할 수 있습니다. 1)'# {param} '은 요청 범위입니다 2)' '은 [태그 핸들러]입니다. (http://balusc.blogspot.com/2011/09/communication -in-jsf-20.html # ViewScopedFailsInTagHandlers). 그래서'@ ViewScope'은 절대적으로 옵션이 아닙니다. –
BalusC
이것은 내가하고 싶은 일에 효과가있었습니다. 그러나 또 다른 문제를 풀어 놓은 것 같습니다. 나는 resquest 범위와 view scope bean을 같은 페이지에 가지고있다.viewScope bean에서 메소드를 트리거 할 것으로 가정되는 페이지에서 actionListener를 트리거 할 때, 요청 범위 bean을 호출 할 뿐이며 문제의 메소드로 전달하지 않습니다. – blo0p3r