Tapestry 5.4 列出 webapp 文件夹中的所有图像

tapestry 5.4 list all images from webapp folder

我的问题是,我想列出所有位置的图像 project/src/main/webapp/images

我知道如果我知道图像的名称,我可以像这样制作 URL:

assetSource.getContextAsset(IMAGESLOCATION + imageName, currentLocale).toClientURL();

但是如果我不知道所有图片的名称怎么办?

提前感谢您的回答!

您基本上需要能够读取给定文件夹中的文件。下面是一些非常基本的代码,可以遍历文件夹中的所有文件:

File folder = new File("your/path");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
  if (listOfFiles[i].isFile()) {
    System.out.println("File " + listOfFiles[i].getName());
  }
  // else, it's a directory
}

所有导入应来自 java.io package

Web 应用程序(以及 Tapestry)不 know/care 文件的绝对路径,因为它可以部署在任何地方。 可以通过调用HttpServletRequest的getRealPath获取文件的绝对路径。

    @Inject
    private HttpServletRequest request;
    ...
    // get root folder of webapp
    String root = request.getRealPath("/");
    // get abs path from any relative path
    String abs = root + '/' + relPath;

HttpServletRequest 的 getRealPath 已弃用,建议使用 ServletContext.getRealPath 代替,但获取 ServletContext 并不容易。

我更喜欢使用 WebApplicationInitializer 实现

    public class AbstractWebApplicationInitializer implements WebApplicationInitializer {


    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        // Here we store ServletContext in some global static variable
        Global.servletContext = servletContext;
        ....
    }