JSP使用数据库中的路径列出文件夹中的所有文件

时间:2015-05-29 12:35:28

标签: java postgresql jsp

我正在直接保存数据库中的文件路径,因为我上传了最多一个文件。 现在一个人最多可以添加5个文件,因此我根据他们的namelastnamephone number为他们创建了唯一的文件夹。

在我的搜索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 个答案:

答案 0 :(得分: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 / tags:

中创建标记库描述符mytaglib.tld
<?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>