2015-05-29 40 views
0

由於我上傳的是最大一個文件,因此我直接保存了數據庫中文件的路徑。 現在,一個人最多可以添加5個文件,因此我正在根據他們的namelastnamephone number爲他們創建獨特的文件夾。JSP使用數據庫路徑列出文件夾中的所有文件

在我的搜索JSP頁面中,我得到了這樣的事情:

<c:if test="${Person.zalacznik != null}">     
    <td> 
     <a href="file:///${Person.zalacznik}"><img src="cv_icon.png" alt="CV" height="42" width="42"></a>    
    </td> 
</c:if> 

,但它是文件路徑。我需要對其進行更改,以便爲文件夾中的每個文件執行forEach循環。

所以:

${Person.zalacznik}是路徑的唯一文件夾從我需要顯示像創建此

<td> file list </td> 

文件列表中的所有文件:

<a href="file:///${Person.zalacznik}/filename"><img src="cv_icon.png" alt="CV" height="42" width="42"></a> <a href="file:///${Person.zalacznik}/filename2"><img src="cv_icon.png" alt="CV" height="42" width="42"></a> 

如何做到這一點?

+1

哪裏是文件名?如果Person.zalacznik只包含一個文件夾的名稱,你會循環什麼?有一個JSP瀏覽文件夾聽起來像是一個安全風險,你需要退後一步,從後端開始:不是將一個路徑存儲到一個文件,而是存儲一組路徑,然後在這個集合中循環JSP。 – Tobb

回答

0

創建一個自定義EL(表達式)語言函數,以便您可以迭代它。 您可能會先嚐試一些示例代碼。

那麼JSP看起來像:

<%@taglib prefix="f" uri="http://www.myurl/mytaglib.tld" %> 
<c:forEach var="i" items="${f:listFiles(Person.zalacznik)}"> 
    <a href="${i.location}"><img src="${i.icon}" alt="$[i.alt}" 
    height="42" width="42"></a>    
</c:forEach> 

的taglib聲明和功能工作將作爲:

package my.el; 
public class Functions { 
    public static class FileInfo { 
     private final String location; 
     public FileInfo(String location) { this.location = location; } 
     public String getLocation() { return name; } 
     public String getIcon() { return "icon.png"; } 
     public String getAlt() { return "CV"; } 
    } 
    public static FileInfo[] listFiles(String directoryName) { 
     Path path = Paths.get(directoryName); 
     ... 
    } 
} 

在目錄/ WEB-INF創建一個標籤庫描述符mytaglib.tld/tags:

<?xml version="1.0" encoding="UTF-8"?> 
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
    version="2.1"> 

    <tlib-version>1.0</tlib-version> 
    <uri>http://www.myurl/mytaglib.tld</uri> 
    <function> 
     <name>listFiles</name> 
     <function-class>my.el.Functions</function-class> 
     <function-signature> 
      my.el.Functions.FileInfo[] listFiles(java.lang.String) 
     </function-signature> 
    </function> 
</taglib> 

在web.xml中我們準備了EL函數的URL使用直接

<web-app 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    version="2.4"> 

    <jsp-config> 
    <taglib> 
     <taglib-uri>http://www.myurl/mytaglib.tld</taglib-uri> 
     <taglib-location>/WEB-INF/tags/mytaglib.tld</taglib-location> 
    </taglib> 
    </jsp-config> 
</web-app> 
相關問題