PrimeFaces - 从Showcase示例运行的TreeTable问题

时间:2011-07-27 13:48:55

标签: jsf primefaces treetable

我正在使用PrimeFaces 3.0的JSF 2.0,并且可以使TreeTable正常工作。发生以下错误:“/ index.xhtml @ 69,62 value =”#{document.name}“:类'Document'没有可读属性'name'。”

以下是代码:

<?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

解决方案如下所示。唯一的变化是,将bean从受保护的访问权限更改为public:

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;
}
}

谢谢你们!