课程' ...'没有财产

时间:2014-08-11 15:37:16

标签: jsf facelets ajax4jsf

我得到了同样的错误:

班级' .... sessionbeans.materialsammlung.Materialsammlung'没有属性' showFiles'。

xhtml的完整代码:

<!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:c="http://java.sun.com/jsp/jstl/core" 
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"  
        xmlns:t="http://myfaces.apache.org/tomahawk"
        xmlns:a4j="http://richfaces.org/a4j"
        >

<ui:include src="/navi/htmlhead.xhtml"/>

    <body>
            <div id="komplett">
                <ui:include src="/navi/kopf.xhtml" />
                <div id="mitte">
                    <div id="links">
                        <ui:include src="/navi/menueNPers.xhtml" />
                    </div>
                    <div id="hauptbereich">
                        <div id="inhalt">
                            <h2>Materialsammlung bearbeiten</h2>
                            <div id="tab20px">
                                <h:form>
                                    <h:commandLink value="Komplette Struktur aufdecken" action="#{TreeBuild.expandAll}"/>
                                    <f:verbatim><span> | </span> </f:verbatim>
                                    <h:commandLink value="Komplette Struktur schlie&szlig;en" action="#{TreeBuild.collapseAll}"/>

                                    <f:verbatim><span> | </span> </f:verbatim>

                                    <t:commandLink value="Sortierung nach Dateiname"                                                   
                                                   disabled="#{TreeBuild.sortAuswahl == 'N'}"
                                                   disabledStyle="color:gray; font-weight:bold;"
                                                   action="#{TreeBuild.sortDateiname}"/>

                                    <f:verbatim><span> | </span> </f:verbatim>

                                    <t:commandLink value="Sortierung nach Dateidatum" 
                                                   disabled="#{TreeBuild.sortAuswahl == 'D'}"
                                                   disabledStyle="color:gray; font-weight:bold;"
                                                   action="#{TreeBuild.sortDateidatum}"/>                                                                                                           

                                </h:form>
                                <div id="tab20px">
                                    <h:panelGroup>
                                        <h:outputText value="&lt;br/&gt;" escape="false" rendered="#{! empty facesContext.maximumSeverity}"/>
                                        <h:messages showDetail="true" showSummary="false" errorStyle="width:80%;color:red" infoStyle="width:80%;color:green"/>
                                    </h:panelGroup>
                                    <h:panelGroup>
                                        <br/>
                                        <h:panelGrid columns="2">
                                            <!--  h:outputLabel id="label_verzeichnis" for="verzeichnis" value="Verzeichnis: " styleClass="h3"/ -->
                                            <!--  h:outputText id="verzeichnis" value="#{materialsammlung.directory}" rendered="#{!empty materialsammlung.directory}"/ -->
                                            <h:outputText id="verzeichnis" value="" />
                                        </h:panelGrid>
                                        <br/>
                                    </h:panelGroup>

                                    <a4j:log/>

                                <h:form id="matsamtree">
                                    <div id="tree">
                                        <t:tree2 id="serverTree" value="#{TreeBuild.expandedTreeData}" var="node" varNodeToggler="t" clientSideToggle="true" binding="#{TreeBuild.tree}">
                                            <f:facet name="person">
                                                <h:panelGroup>
                                                    <a4j:commandLink id="alink" styleClass="#{t.nodeSelected ? 'documentSelected':'document'}" action="#{Materialsammlung.showFiles}" render="eingabebereich">
                                                        <t:graphicImage value="/resources/images/yellow-folder-open.png" rendered="#{t.nodeExpanded}" border="0"/>
                                                        <t:graphicImage value="/resources/images/yellow-folder-closed.png" rendered="#{!t.nodeExpanded}" border="0"/>
                                                        <h:outputText value="#{a4j.node.description}" styleClass="nodeFolder"/>
                                                        <f:param id="path" name="path" value="#{t.node.identifier}" /> 
                                                    </a4j:commandLink>
                                                </h:panelGroup>
                                            </f:facet>
                                            <f:facet name="foo-folder">
                                                <h:panelGroup>
                                                    <h:commandLink  styleClass="#{t.nodeSelected ? 'documentSelected':'document'}" action="#{Materialsammlung.showFiles}">
                                                        <t:graphicImage value="/resources/images/yellow-folder-open.png" rendered="#{t.nodeExpanded}" border="0"/>
                                                        <t:graphicImage value="/resources/images/yellow-folder-closed.png" rendered="#{!t.nodeExpanded}" border="0"/>
                                                        <h:outputText value="#{a4j.node.description}" styleClass="nodeFolder"/>
                                                        <f:param id="path2"  name="path"  value="#{a4j.node.identifier}" />
                                                    </h:commandLink>
                                                </h:panelGroup>
                                            </f:facet>
                                            <f:facet name="bar-folder">
                                                <h:panelGroup>
                                                    <t:graphicImage value="/resources/images/blue-folder-open.gif" rendered="#{t.nodeExpanded}" border="0"/>
                                                    <t:graphicImage value="/resources/images/blue-folder-closed.png" rendered="#{!t.nodeExpanded}" border="0"/>
                                                    <h:outputText value="#{a4j.node.description}" styleClass="nodeFolder"/>
                                                    <h:outputText value=" (#{a4j.node.childCount})" styleClass="childCount" rendered="#{!empty t.node.children}"/>
                                                </h:panelGroup>
                                            </f:facet>
                                        </t:tree2>
                                    </div>
                                </h:form>


                                <a4j:outputPanel id="eingabebereich" ajaxRendered="true">
                                    <h:panelGroup>
                                        <br/>
                                        <h:panelGrid columns="2">
                                            <h:outputLabel id="label_verzeichnis2" for="verzeichnis2" value="Verzeichnis: " styleClass="h3"/>
                                            <h:outputText id="verzeichnis2" value="#{Materialsammlung.directory}" rendered="#{!empty materialsammlung.directory}"/>
                                        </h:panelGrid>
                                        <br/>
                                    </h:panelGroup>


                                    <!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
                                    <!-- Verzeichnis anlegen              -->
                                    <!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->           
                                    <h:form >
                                        <h:panelGroup rendered="#{!empty materialsammlung.directory}">
                                            <h3><h:outputText value="Verzeichnis anlegen"/></h3>
                                            <div id="tab20px">
                                                <h:outputText value="Verzeichnisname  "/>
                                                <h:inputText value="#{materialsammlung.newDirectory}"/>
                                                <h:commandButton value="anlegen" action="#{Materialsammlung.makeDir}"/>
                                            </div>
                                        </h:panelGroup>
                                    </h:form>

                                    <p></p>

                                    <!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
                                    <!-- delete_dir                       -->
                                    <!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->           
                                    <h:form id="delete_dir" onsubmit="if (!confirm('Wollen Sie das Verzeichnis ' + document.getElementById('delete_dir:verzeichnis').title + ' wirklich l&ouml;schen?')) return false"> 

                                        <h:panelGroup rendered="#{!empty materialsammlung.directory and !materialsammlung.root}">
                                            <h3><h:outputText value="Verzeichnis l&ouml;schen"/></h3>
                                            <div id="tab20px">
                                                <h:outputText value="'"/>
                                                <h:outputText id="verzeichnis" value="#{materialsammlung.directory}" title="#{materialsammlung.directory}"/>
                                                <h:outputText value="'  "/>

                                                <!-- h:commandButton value="Verzeichnis löschen" action="#{materialsammlung.deleteDir}" onclick="javascript:confirm_results(this);"/ -->
                                                <h:commandButton value="Verzeichnis l&ouml;schen" action="#{Materialsammlung.deleteDir}" />

                                            </div>
                                        </h:panelGroup>
                                    </h:form>

                                    <h:panelGroup rendered="#{!empty materialsammlung.directory and !materialsammlung.root}">
                                        <h3><h:outputText value="Dateien hinzuf&uuml;gen"/></h3>
                                        <div id="tab20px">
                                            <t:panelGrid columns="1">
                                                <h:form id="form1" enctype="multipart/form-data" style="text-align:left">
                                                    <h:outputText value="Datei ausw&auml;hlen  " />
                                                    <t:inputFileUpload id="fileupload"
                                                        value="#{materialsammlung.uploadFile}" storage="file"
                                                        styleClass="fileUploadInput" required="true" />
                                                    <h:commandButton value="Speichern"
                                                        action="#{Materialsammlung.saveFile}" />
                                                </h:form>
                                            </t:panelGrid>
                                        </div>
                                    </h:panelGroup>

                                    <p></p>

                                    <!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
                                    <!-- delete_file                      -->
                                    <!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->           
                                    <h:form id="delete_file">
                                        <h:panelGroup rendered="#{!empty materialsammlung.directory and !empty materialsammlung.fileList}">
                                            <h3><h:outputText value="Dateien l&ouml;schen"/></h3>
                                            <div id="tab20px">
                                                <h:dataTable var="file" value="#{materialsammlung.fileList}">
                                                    <h:column > 
                                                        <f:facet name="header"> 
                                                            <h:outputText  value="Datei" styleClass="tableHeadColor"/>
                                                        </f:facet> 
                                                        <h:outputText value="#{file.name}" id="name_datei"/> 
                                                    </h:column> 
                                                    <h:column > 
                                                        <f:facet name="header"> 
                                                            <h:outputText  value="" styleClass="tableHeadColor"/>
                                                        </f:facet> 
                                                        <h:commandLink title="#{file.name}" value="L&ouml;schen" action="#{Materialsammlung.deleteFile}" onclick="if (!confirm('Wollen Sie die Datei ' + this.title + ' wirklich löschen?')) return false"> 
                                                            <f:param id="name"  name="name"  value="#{file.name}" />
                                                        </h:commandLink>
                                                    </h:column> 
                                                </h:dataTable>
                                            </div>
                                        </h:panelGroup>
                                    </h:form>
                                </a4j:outputPanel>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
    </body>
</html>

以下是xhtml的摘要:

<a4j:commandLink id="alink" styleClass="#{t.nodeSelected ? 'documentSelected':'document'}" action="#{Materialsammlung.showFiles}" render="eingabebereich"> 
    <t:graphicImage value="/resources/images/yellow-folder-open.png" rendered="#{t.nodeExpanded}" border="0"/>
    <t:graphicImage value="/resources/images/yellow-folder-closed.png" rendered="#{!t.nodeExpanded}" border="0"/>
    <h:outputText value="#{a4j.node.description}" styleClass="nodeFolder"/>
    <f:param id="path" name="path" value="#{t.node.identifier}" /> 
</a4j:commandLink> 

action =&#34;#{Materialsammlung.showFiles}&#34; 存在问题。未调用Bean Materialsammlung

Materialsammlung.java的代码:

package --XXX--.sessionbeans.materialsammlung;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.myfaces.custom.fileupload.UploadedFile;

import --XXX--.anmeldung.SessionUser;
import --XXX--.utilities.ContextFactory;
import --XXX--.utilities.WebUtility;

@ManagedBean(name="Materialsammlung")
@SessionScoped

public class Materialsammlung implements Serializable {

    public Materialsammlung(){

          webUtility = new WebUtility();
    }

    private static final long serialVersionUID = 1L;
    private WebUtility webUtility;

    private List<Datei> fileList = new ArrayList<Datei>();
    private String directory;
    private UploadedFile uploadFile;
    private String newDirectory;
    private final String ROOT_DIRECTORY = "materialsammlung";
    private final String APPLICATION_NAME = "--XXX--";

    // ===============================================================
    // ===============================================================
    // showFiles(...
    // ===============================================================
    // ===============================================================
    public String showFiles() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) facesContext
                .getExternalContext().getRequest();
        String path = request.getParameter("path");

        ServletContext servletContext = ContextFactory.createServletContext();
        String realPath = servletContext.getRealPath("");

        String[] teileURL = realPath.split(APPLICATION_NAME);
        String pathMatSam = teileURL[0] + ROOT_DIRECTORY;
        if (path.equals(ROOT_DIRECTORY)) {
            this.setDirectory(ROOT_DIRECTORY);
            path = pathMatSam;
        } else {
            this.setDirectory(ROOT_DIRECTORY + path);
            path = pathMatSam + path;
        }
        listFiles(path);

        return null;
    }

    // ===============================================================
    // ===============================================================
    // listFiles(...
    // ===============================================================
    // ===============================================================
    private void listFiles(String path) {

        // ==================================================
        // listFiles
        // ==================================================
        fileList.clear();
        File dir = new File(path);
        File[] files = dir.listFiles();

        // ==================================================
        // sort
        // ==================================================
        String sortAuswahl = "N"; // N (Dateiname) oder D (Dateidatum)

        HttpSession httpSession = (HttpSession) FacesContext
                .getCurrentInstance().getExternalContext().getSession(false);
        if (httpSession.getAttribute("sortMaterialsammlung") != null) {
            sortAuswahl = (String) httpSession
                    .getAttribute("sortMaterialsammlung");
        }

        if (sortAuswahl == "N") {

            Arrays.sort(files);
        }

        else {

            Arrays.sort(files, new Comparator() {
                public int compare(Object o1, Object o2) {
                    File f0 = (File) o1, f1 = (File) o2;
                    long last0 = f0.lastModified(), last1 = f1.lastModified();
                    if (last0 > last1) {
                        return 1;
                    } else if (last0 < last1) {
                        return -1;
                    } else {
                        return 0;
                    }
                }
            });
        }

        // ==================================================
        // Schleife
        // ==================================================
        for (File file : files) {
            if (file.isFile()) {
                Datei datei = new Datei();
                datei.setName(file.getName());
                datei.setDateiFile(file);
                fileList.add(datei);
            }
        }
    }

    // ===============================================================
    // ===============================================================
    // deleteFile(...
    // ===============================================================
    // ===============================================================
    public String deleteFile() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) facesContext
                .getExternalContext().getRequest();
        String name = request.getParameter("name");

        ServletContext servletContext = ContextFactory.createServletContext();
        String realPath = servletContext.getRealPath("");

        String[] teileURL = realPath.split(APPLICATION_NAME);
        String pathMatSam = teileURL[0] + this.getDirectory();
        String path = pathMatSam + "/" + name;

        File datei = new File(path);

        SessionUser sessionUser = (SessionUser) webUtility
                .readObject("#{sessionUser}");
        boolean role_BundVS = sessionUser.isRole_BUNDVS();
        if (role_BundVS == false) {
            webUtility.addFehlertextToContext("*",
                    "Sie verfügen nicht über die nötigen Änderungsrechte!");
        } else {
            datei.delete();
            listFiles(pathMatSam);
            webUtility.addHinweistextToContext("*",
                    "Die Datei '" + datei.getName() + "' wurde gelöscht!");
        }
        return null;
    }

    public String saveFile() {
        if (!uploadFile.getContentType().equals("application/pdf")) {
            webUtility.addFehlertextToContext("*",
                    "Bitte wählen Sie eine PDF-Datei aus!");
        } else {
            String array[];
            if ((uploadFile.getName().indexOf("\\") != -1)) {
                array = uploadFile.getName().split("\\\\");
                System.out.println(array[array.length - 1]);
            } else {
                array = uploadFile.getName().split("/");
            }
            String dateiname = array[array.length - 1];

            try {
                ServletContext servletContext = ContextFactory
                        .createServletContext();
                String realPath = servletContext.getRealPath("");

                String[] teileURL = realPath.split(APPLICATION_NAME);
                String pathMatSam = teileURL[0] + this.getDirectory();
                String path = pathMatSam + "/" + dateiname;

                File checkFile = new File(path);
                if (checkFile.exists()) {
                    webUtility.addFehlertextToContext("*",
                            "Datei ist bereits vorhanden!");
                    uploadFile = null;
                }
                checkFile = null;

                BufferedInputStream is = new BufferedInputStream(
                        uploadFile.getInputStream());
                BufferedOutputStream out = new BufferedOutputStream(
                        new FileOutputStream(path));
                byte[] buff = uploadFile.getBytes();
                int len;
                while (0 < (len = is.read(buff)))
                    out.write(buff, 0, len);
                out.close();
                listFiles(pathMatSam);
                webUtility.addHinweistextToContext("*", "Die Datei '"
                        + uploadFile.getName() + "' wurde gespeichert!");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    public String makeDir() {
        ServletContext servletContext = ContextFactory.createServletContext();
        String realPath = servletContext.getRealPath("");

        // webUtility.addHinweistextToContext("*",
        // "Temporärer Debug-Hinweis (dient Fehlersuche): realPath = '" +
        // realPath + "'!");

        String[] teileURL = realPath.split(APPLICATION_NAME);
        String pathMatSam = teileURL[0] + this.getDirectory();

        // webUtility.addHinweistextToContext("*",
        // "Temporärer Debug-Hinweis (dient Fehlersuche): pathMatSam = '" +
        // pathMatSam + "'!");

        File dir = new File(pathMatSam + "/" + this.newDirectory);
        SessionUser sessionUser = (SessionUser) webUtility
                .readObject("#{sessionUser}");
        boolean role_BundVS = sessionUser.isRole_BUNDVS();
        if (!dir.exists()) {
            if (role_BundVS == false) {
                webUtility.addFehlertextToContext("*",
                        "Sie verfügen nicht über die nötigen Änderungsrechte!");
            } else {
                // dir.mkdir();
                if (dir.mkdir()) {
                    webUtility.addHinweistextToContext("*", "Das Verzeichnis '"
                            + dir.getName() + "' wurde angelegt!");
                } else {
                    webUtility
                            .addFehlertextToContext("*", "Das Verzeichnis '"
                                    + dir.getName()
                                    + "' konnte nicht angelegt werden!");
                }
            }
        } else {
            webUtility.addFehlertextToContext("*",
                    "Verzeichnis '" + dir.getName()
                            + "' ist bereits vorhanden!");
            this.setNewDirectory(null);
        }
        this.setNewDirectory(null);
        return null;
    }

    public String deleteDir() {
        ServletContext servletContext = ContextFactory.createServletContext();
        String realPath = servletContext.getRealPath("");

        String[] teileURL = realPath.split(APPLICATION_NAME);
        String pathMatSam = teileURL[0] + this.getDirectory();

        File dir = new File(pathMatSam);
        if (dir.listFiles().length < 1) {
            SessionUser sessionUser = (SessionUser) webUtility
                    .readObject("#{sessionUser}");
            boolean role_BundVS = sessionUser.isRole_BUNDVS();
            if (role_BundVS == false) {
                webUtility.addFehlertextToContext("*",
                        "Sie verfügen nicht über die nötigen Änderungsrechte!");
            } else {
                dir.delete();
                webUtility.addHinweistextToContext("*", "Das Verzeichnis '"
                        + dir.getName() + "' wurde gelöscht!");
            }
        } else {
            webUtility
                    .addFehlertextToContext("*",
                            "Löschen nicht möglich. Im Verzeichnis befinden sich noch Dateien!");
        }
        this.setDirectory(null);
        return null;
    }

    // ===============================================================
    // ===============================================================
    // getFileList(...
    // ===============================================================
    // ===============================================================
    public List<Datei> getFileList() {

        return fileList;
    }

    // ===============================================================
    // ===============================================================
    // Getter und Setter
    // ===============================================================
    // ===============================================================

    public void setFileList(List<Datei> fileList) {
        this.fileList = fileList;
    }

    public String getDirectory() {
        return directory;
    }

    public void setDirectory(String directory) {
        this.directory = directory;
    }

    public UploadedFile getUploadFile() {
        return uploadFile;
    }

    public void setUploadFile(UploadedFile uploadFile) {
        this.uploadFile = uploadFile;
    }

    public String getNewDirectory() {
        return newDirectory;
    }

    public void setNewDirectory(String newDirectory) {
        this.newDirectory = newDirectory;
    }

    public boolean isRoot() {
        return this.getDirectory().equals(ROOT_DIRECTORY);
    }

    public WebUtility getWebUtility() {
        return webUtility;
    }

    public void setWebUtility(WebUtility webUtility) {
        this.webUtility = webUtility;
    }
}

有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我得到了解决方案。债务是区分大小写的。我写了#34; materialsammlung&#34;在.xhtml中,豆类名称为&#34; Materialsammlung&#34;。