Image 从Maven Facelets项目的资源目录访问图像
首先,如果我以前问过这个问题,请原谅我(我因为脑瘤而有记忆问题。) 我正在尝试使用托管Bean从目录中获取图像,但不知道如何获取以下位置的url: 1) Maven“资源”目录& 2) webapp/images目录(使用我的托管bean) 另外,根据我的理解,使用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
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中获取本地磁盘文件系统的目录列表确实有点困难