2011-07-27 3 views
2

PrimeFaces 3.0에서 JSF 2.0을 사용 중이며 TreeTable을 사용할 수 있습니다. 다음 오류가 발생합니다. "/index.xhtml @ 69,62 value ="# {document.name} ": 'Document'클래스에 'name'속성을 읽을 수 없습니다."PrimeFaces - TreeTable 문제 Showcase에서 실행 예제

<?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"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:p="http://primefaces.prime.com.tr/ui" 
     xmlns:h="http://java.sun.com/jsf/html"> 
    <h:head> 
     <title>Example</title> 
    </h:head> 

    <h:body> 

     <h:form> 

      <p:treeTable value="#{documentsController.root}" var="document"> 

       <p:column> 
        <f:facet name="header"> 
         Name 
        </f:facet> 
        <h:outputText value="#{document.name}" /> 
       </p:column> 

       <p:column> 
        <f:facet name="header"> 
         Size 
        </f:facet> 
        <h:outputText value="#{document.size}" /> 
       </p:column> 

       <p:column> 
        <f:facet name="header"> 
         Type 
        </f:facet> 
        <h:outputText value="#{document.type}" /> 
       </p:column> 

      </p:treeTable> 

     </h:form> 

    </h:body> 
</html> 

ManagedBean은 :

@ManagedBean 
    @SessionScoped 
    public class DocumentsController implements Serializable { 

    private TreeNode root; 

    public DocumentsController() { 
     root = new DefaultTreeNode("root", null); 

     TreeNode documents = new DefaultTreeNode(new Document("Documents", "-", "Folder"), root); 
     TreeNode pictures = new DefaultTreeNode(new Document("Pictures", "-", "Folder"), root); 
     TreeNode music = new DefaultTreeNode(new Document("Music", "-", "Folder"), root); 

     TreeNode work = new DefaultTreeNode(new Document("Work", "-", "Folder"), documents); 
     TreeNode primefaces = new DefaultTreeNode(new Document("PrimeFaces", "-", "Folder"), documents); 

     //Documents 
     TreeNode expenses = new DefaultTreeNode("document", new Document("Expenses.doc", "30 KB", "Word Document"), work); 
     TreeNode resume = new DefaultTreeNode("document", new Document("Resume.doc", "10 KB", "Word Document"), work); 
     TreeNode refdoc = new DefaultTreeNode("document", new Document("RefDoc.pages", "40 KB", "Pages Document"), primefaces); 

     //Pictures 
     TreeNode barca = new DefaultTreeNode("picture", new Document("barcelona.jpg", "30 KB", "JPEG Image"), pictures); 
     TreeNode primelogo = new DefaultTreeNode("picture", new Document("logo.jpg", "45 KB", "JPEG Image"), pictures); 
     TreeNode optimus = new DefaultTreeNode("picture", new Document("optimusprime.png", "96 KB", "PNG Image"), pictures); 

     //Music 
     TreeNode turkish = new DefaultTreeNode(new Document("Turkish", "-", "Folder"), music); 

     TreeNode cemKaraca = new DefaultTreeNode(new Document("Cem Karaca", "-", "Folder"), turkish); 
     TreeNode erkinKoray = new DefaultTreeNode(new Document("Erkin Koray", "-", "Folder"), turkish); 
     TreeNode mogollar = new DefaultTreeNode(new Document("Mogollar", "-", "Folder"), turkish); 

     TreeNode nemalacak = new DefaultTreeNode("mp3", new Document("Nem Alacak Felek Benim", "1500 KB", "Audio File"), cemKaraca); 
     TreeNode resimdeki = new DefaultTreeNode("mp3", new Document("Resimdeki Gozyaslari", "2400 KB", "Audio File"), cemKaraca); 

     TreeNode copculer = new DefaultTreeNode("mp3", new Document("Copculer", "2351 KB", "Audio File"), erkinKoray); 
     TreeNode oylebirgecer = new DefaultTreeNode("mp3", new Document("Oyle bir Gecer", "1794 KB", "Audio File"), erkinKoray); 

     TreeNode toprakana = new DefaultTreeNode("mp3", new Document("Toprak Ana", "1536 KB", "Audio File"), mogollar); 
     TreeNode bisiyapmali = new DefaultTreeNode("mp3", new Document("Bisi Yapmali", "2730 KB", "Audio File"), mogollar); 

    } 

    /** 
    * 
    * @return 
    */ 
    public TreeNode getRoot() { 
     return root; 
    } 

} 

콩 :

class Document { 

    private String name; 

    private String size; 

    private String type; 

    public Document(String name, String size, String type) { 
     this.name = name; 
     this.size = size; 
     this.type = type; 
    } 

    public Document() {} 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getSize() { 
     return size; 
    } 

    public void setSize(String size) { 
     this.size = size; 
    } 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 



} 

어떤 아이디어

여기에 코드입니까? 이는 정확히 쇼케이스와 같습니다. http://www.primefaces.org/showcase-labs/ui/treeTable.jsf

해결책은 다음과 같습니다. 유일한 변경 사항은 보호 된 액세스 권한을 공개로 변경하는 것입니다.

public class Document { 

private String name; 

private String size; 

private String type; 

public Document(String name, String size, String type) { 
    this.name = name; 
    this.size = size; 
    this.type = type; 
} 

public Document() {} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getSize() { 
    return size; 
} 

public void setSize(String size) { 
    this.size = size; 
} 

public String getType() { 
    return type; 
} 

public void setType(String type) { 
    this.type = type; 
} 
} 

감사합니다!

+0

확인합니다. Document 클래스는 기본 액세스 한정자로 선언되었습니다. 공개 여야합니다. 이제 작동 중입니다. – axcdnt

+0

답으로 다시 게시해야합니다. – BalusC

+0

내 자신의 질문에 대답하거나 대답으로 편집하는 것이 더 나은 습관입니까? 나는 당신이 "repost"라고 말할 때 그 아이디어를 얻지 못했습니다. 고맙습니다. – axcdnt

답변