首先,如果我之前已经问过这个问题,请原谅我(因为脑肿瘤会导致记忆问题。)
我正在尝试使用Managed Bean来从目录中获取图像,但是不知道如何获取以下位置的url:
1)Maven'资源'dir& 2)webapp / images目录(来自我的托管bean。
另外,使用h:datatTable
来显示数据仍然没问题,因为据我所知,表格有些过时了吗?
我已经写了大部分所需的bean,我只是在寻找有关如何(如果可能)找到网址或将网址设置为托管属性的信息。
package com.buhaugane.util;
/**
* Created by IntelliJ IDEA.
* User: Yucca http://thejarbar.org
* Date: 2/23/12
* Time: 10:21 AM
* To change this template use File | Settings | File Templates.
*/
import org.apache.commons.collections.ArrayStack;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import java.io.File;
import java.util.Arrays;
import java.util.List;
/**
* Contain utility methods to interact with images.
*/
@ManagedBean(name = "images")
public class ImageBean {
List<File> images;
static String thumbUrl;
static String fullSizeURL;
/**
* Returns all thumbnails at specified url
*/
public static List<File> thumbnails (){
thumbUrl=//can I get it from context if I can't set url as a manages property?
File[] files = new File(thumbUrl).listFiles();
List<File> returnList = Arrays.asList(files);
return returnList;
}
/**
* Returns all full-sized images at specified url
*/
public static List<File> fullSized (){
thumbUrl=**//can I get it from context if I can't set url as a manages property?**
File[] files = new File(thumbUrl).listFiles();
List<File> returnList = Arrays.asList(files);
return returnList;
}
}
非常感谢,Yucca
答案 0 :(得分:1)
您可以使用ExternalContext#getRealPath()
将给定的相对Web路径转换为绝对磁盘文件系统。因此,要获取公共webcontent中/images
文件夹的绝对磁盘文件系统路径,请执行以下操作:
String relativeWebPath = "/images";
String absoluteDiskPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath(relativeWebPath);
File imagesFolder = new File(absoluteDiskPath);
// ...
您应该记住,当服务器配置为将WAR扩展到内存而不是磁盘时,上述操作将不起作用。然后getRealPath()
会在所有情况下返回null
。您需要寻找替代方法,例如将其存储在WAR之外的固定路径上,或者很可能存储在数据库中。
另外还可以使用h:datatTable显示数据,因为我理解表有点过时了吗?
表格没有过时。它们仍然非常适合呈现表格数据。只使用表格进行布局确实被认为是不好的做法,因为它不是语义,因此对SEO来说很差。在JSF术语中,我们讨论使用<h:panelGrid>
来提供页面布局(例如页眉,正文,页脚等)。您应该使用<div>
代替<h:panelGroup layout="block">
生成{/ 1}}。