2011-01-23 6 views
3

JSF 2.0의 HtmlDataTable에 문제가 있습니다. 내 웹 페이지에는 h : dataTable 및 기타 사용자가 로그인해야만 렌더링되어야하는 다른 콘텐츠가 있습니다.rendered = "false", h : dataTable의 내용은 항상 평가됩니다

HtmlDataTable의 내용이 데이터베이스에서로드됩니다. 사용자가 로그인하지 않았을 때 h : dataTable이 렌더링되지 않지만 내용은 여전히 ​​평가됩니다. 내가 메소드의 호출을 기록하고있는 getAllXxx() 메소드에서

<h:panelGroup rendered="#{userBean.loggedIn}"> 
    <h:dataTable value="#{xxxBean.allXxx}" 
       var="c"> 
     <h:column> 
      <h:outputText value="#{c.name}"/> 
     </h:column> 
    </h:dataTable> 
    <!-- some other content --> 
</h:panelGroup> 

: 여기

는 웹 페이지의 코드입니다. 그러나 h : dataTable (및 다른 모든 내용)이 렌더링되지 않으면 getAllXxx() 메서드가 여전히 호출됩니다.

h : panelGroup 대신 c : if를 사용하려고했습니다. 그렇게하면 작동하지만 로그인 프로세스 중에 문제가 발생하므로 적절한 해결책이 아닙니다.

누구든지 해결 방법을 알고 있습니까? 미리 감사드립니다.

+1

동일한 문제가 있습니다. GlassFish 3.1에 배포하고 있습니다. – Rogach

답변

1

다음은 SSCCE 인 Tomcat 7.0.5의 Mojarra 2.0.3에서 문제를 재현 할 수 없습니다.

com.example.Bean

package com.example; 

import java.util.Arrays; 
import java.util.List; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.RequestScoped; 

@ManagedBean 
@RequestScoped 
public class Bean { 

    private List<String> list = Arrays.asList("one", "two", "three"); 

    public List<String> getList() { 
     System.out.println("getList() called"); 
     return list; 
    } 

} 

열기 http://localhost:8080/playground/test.jsf

<!DOCTYPE html> 
<html lang="en" 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"> 
    <h:head> 
     <title>SO question 4774516</title> 
    </h:head> 
    <h:body> 
     <h:panelGroup rendered="#{param.show}"> 
      <h:dataTable value="#{bean.list}" var="item"> 
       <h:column>#{item}</h:column> 
      </h:dataTable> 
     </h:panelGroup> 
    </h:body> 
</html> 

test.xhtml

는 표준 출력 라인을 표시하지 않습니다. 열기는 http://localhost:8080/playground/test.jsf?show=true입니다.

문제는 다른 문제로 인해 발생합니다. JSF 구현의 버그이거나 프로 시저를 잘못 해석 한 것입니다. 예를 들어, 은 실제로이 요청 요청 값 적용 단계에서 getter가 호출되고 #{userBean.loggedIn}의 결과가 호출 단계에서 변경된 포스트 백 요청이 될 수 있습니다. 또는 getter는 다른 것에 의해 호출됩니다.

+0

예제가 mojara 2.1.4에서 작동하지 않고 mojara 2.0.3과 myfaces 2.1.5와 함께 작동합니다. 매우 이상합니다 – user1278278

+0

@ user1278278 : 주어진 정확한 예제를 사용하여 2.1.4에서 재현 할 수 없습니다. – BalusC

관련 문제