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;
....
}
我的问题是,我想列出所有位置的图像 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;
....
}