Image 从Maven Facelets项目的资源目录访问图像

Image 从Maven Facelets项目的资源目录访问图像,image,url,jsf-2,facelets,managed-bean,Image,Url,Jsf 2,Facelets,Managed Bean,首先,如果我以前问过这个问题,请原谅我(我因为脑瘤而有记忆问题。) 我正在尝试使用托管Bean从目录中获取图像,但不知道如何获取以下位置的url: 1) Maven“资源”目录& 2) webapp/images目录(使用我的托管bean) 另外,根据我的理解,使用h:datatTable来显示数据还可以吗?不可以 我已经编写了所需bean的很大一部分,并且正在寻找关于如何(如果可能的话)找到url或将url设置为托管属性的信息 包com.buhaugane.util /** * Create

首先,如果我以前问过这个问题,请原谅我(我因为脑瘤而有记忆问题。)

我正在尝试使用托管Bean从目录中获取图像,但不知道如何获取以下位置的url:

1) Maven“资源”目录& 2) webapp/images目录(使用我的托管bean)

另外,根据我的理解,使用
h:datatTable
来显示数据还可以吗?不可以

我已经编写了所需bean的很大一部分,并且正在寻找关于如何(如果可能的话)找到url或将url设置为托管属性的信息

包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;
    }
}
/**
*由IntelliJ IDEA创建。
*用户:尤卡http://thejarbar.org
*日期:2012年2月23日
*时间:上午10:21
*要更改此模板,请使用文件|设置|文件模板。
*/
导入org.apache.commons.collections.ArrayStack;
导入javax.faces.bean.ManagedBean;
导入javax.faces.context.FacesContext;
导入java.io.File;
导入java.util.array;
导入java.util.List;
/**
*包含与图像交互的实用方法。
*/
@ManagedBean(name=“images”)
公共类ImageBean{
列出图像;
静态字符串thumbUrl;
静态字符串fullSizeURL;
/**
*返回指定url处的所有缩略图
*/
公共静态列表缩略图(){
thumbUrl=//如果无法将url设置为属性,是否可以从上下文中获取它?
File[]files=新文件(thumbUrl).listFiles();
List returnList=Arrays.asList(文件);
退货清单;
}
/**
*返回指定url处的所有全尺寸图像
*/
公共静态列表完整大小(){
thumbUrl=**//如果无法将url设置为属性,是否可以从上下文中获取它**
File[]files=新文件(thumbUrl).listFiles();
List returnList=Arrays.asList(文件);
退货清单;
}
}
非常感谢,Yucca

您可以使用它将给定的相对web路径转换为绝对磁盘文件系统。因此,要获取public webcontent中
/images
文件夹的绝对磁盘文件系统路径,请执行以下操作:

String relativeWebPath = "/images";
String absoluteDiskPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath(relativeWebPath);
File imagesFolder = new File(absoluteDiskPath);
// ...
您只需要记住,当服务器被配置为将WAR扩展到内存而不是磁盘上时,上述操作将不起作用在任何情况下都将返回
null
。您需要寻找一种替代方法,例如将其存储在WAR之外的固定路径上,或者非常可能存储在数据库中


另外,使用h:datatTable来显示数据还可以吗?据我所知,这些表有些过时了

表并没有过时。它们仍然非常适合显示表格数据。仅使用表进行布局确实被认为是不好的做法,因为它没有语义,因此不利于SEO。在JSF术语中,我们接下来讨论的是使用
来给出页面布局(例如页眉、正文、页脚等)。您应该使用
s,它可以由

生成。您可以使用它将给定的相对web路径转换为绝对磁盘文件系统。因此,要获取public webcontent中
/images
文件夹的绝对磁盘文件系统路径,请执行以下操作:

String relativeWebPath = "/images";
String absoluteDiskPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath(relativeWebPath);
File imagesFolder = new File(absoluteDiskPath);
// ...
您只需要记住,当服务器被配置为将WAR扩展到内存而不是磁盘上时,上述操作将不起作用在任何情况下都将返回
null
。您需要寻找一种替代方法,例如将其存储在WAR之外的固定路径上,或者非常可能存储在数据库中


另外,使用h:datatTable来显示数据还可以吗?据我所知,这些表有些过时了


表并没有过时。它们仍然非常适合显示表格数据。仅使用表进行布局确实被认为是不好的做法,因为它没有语义,因此不利于SEO。在JSF术语中,我们接下来讨论的是使用
来给出页面布局(例如页眉、正文、页脚等)。您应该改为使用
s,它可以由

生成,只是为了验证,将图像放在“resource2”目录下,如下所述:,这意味着我可以将“RelativeWebPath”编码设置为:“/classes/images”?谢谢,不,
/WEB-INF/classes/images
。再次感谢。我不知道我想要的方法是否适合我想要的。我似乎找不到使用托管bean进行图像处理的具体示例,我似乎也找不到演示h:panelGrid的具体示例。无论如何,我认为这可能有些过分,因为我可以简单地硬编码我的视图文件中的所有内容。除非您推荐?在托管bean中获取本地磁盘文件系统的目录列表确实是一种奇怪的要求。您通常会将文件名存储在某个数据库中。是的,这几乎是“代码复制”,但数据库的优势在于,它能够仅使用SQL查找特定信息,并添加/链接其他(元数据)信息。关于
,您是否理解不应该使用它来进行页面布局?它会生成
。谢谢&是的,我理解。我正在使用div进行内容布局。我打算创建一个可用于照片库的实用工具或方法:)只是为了验证,将图像放在“resource2”目录下,如下所述:,意味着我可以将“RelativeWebPath”编码设置为:“/classes/images”?谢谢,不,
/WEB-INF/classes/images
。再次感谢。我不知道我想要的方法是否适合我想要的。我似乎找不到将托管bean用于图像的具体示例,也找不到演示h:panelGrid的具体示例。无论如何,我认为这可能是过分的,因为我可以简单地将所有内容硬编码到我的视图文件中。除非您推荐,否则在托管bean中获取本地磁盘文件系统的目录列表确实有点困难