我得到了同样的错误:
班级' .... 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ß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="<br/>" 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öschen?')) return false">
<h:panelGroup rendered="#{!empty materialsammlung.directory and !materialsammlung.root}">
<h3><h:outputText value="Verzeichnis lö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öschen" action="#{Materialsammlung.deleteDir}" />
</div>
</h:panelGroup>
</h:form>
<h:panelGroup rendered="#{!empty materialsammlung.directory and !materialsammlung.root}">
<h3><h:outputText value="Dateien hinzufü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ä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ö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ö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;
}
}
有人有什么想法吗?
答案 0 :(得分:1)
我得到了解决方案。债务是区分大小写的。我写了#34; materialsammlung&#34;在.xhtml中,豆类名称为&#34; Materialsammlung&#34;。