<p:graphicImage>在jsf中无效

use*_*007 3 jsf primefaces graphicimage

我最近<p:galleria>在我的JSF页面中包含了一个,如PrimeFaces展示中所示.代码正在执行而没有任何错误,但它不显示任何图像.我认为这是由于图像的路径格式不正确.这是怎么造成的,我该如何解决?

index.xhtml

<p:galleria value="#{compa.images}" var="image" panelWidth="1570" panelHeight="250" showCaption="true">  
    <p:graphicImage value="resource/images/#{image}"  name="COMPANY CREATION"/>  
</p:galleria> 
Run Code Online (Sandbox Code Playgroud)

compa.java

public void init() {  
    images = new ArrayList<String>();  

    for(int i=1;i<=10;i++) {  
        images.add("resource/images" + i + ".jpg");  
    }  
}
Run Code Online (Sandbox Code Playgroud)

IDE中的图像路径是ps\build\web\resource\images.

Bal*_*usC 6

首先,JSF在这个问题的上下文中只是一个HTML代码生成器.在HTML中,图像由<img>元素表示,其src属性应指向(相对)URL,webbrowser可以从中单独下载图像.您是否通过在webbrowser中打开JSF页面并右键单击和查看源来检查生成的HTML输出?生成的<img>元素看起来好吗?可能不是.

您使用该name属性的方式不正确.

<p:graphicImage value="resource/images/#{image}"  name="COMPANY CREATION"/>  
Run Code Online (Sandbox Code Playgroud)

name属性表示"资源名称".它基本上是资源的路径,相对于/resources文件夹.此属性优先于value属性.所以基本上你要创造

<img src="COMPANY CREATION" />
Run Code Online (Sandbox Code Playgroud)

这个不对.相反,JSF会自动生成一个RES_NOT_FOUNDURL.您应该在生成的HTML输出中看到它.

如果您的意图是将"公司创建"显示为工具提示,那么正确的方法是

<p:graphicImage name="images/#{image}" title="COMPANY CREATION" />
Run Code Online (Sandbox Code Playgroud)

或者,如果您坚持使用value属性,该属性采用上下文相关URL而不是资源名称:

<p:graphicImage value="/resources/images/#{image}" title="COMPANY CREATION" />
Run Code Online (Sandbox Code Playgroud)