3

我最近<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> 

compa.java

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

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

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

4

1 回答 1

6

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

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

<p:graphicImage value="resource/images/#{image}"  name="COMPANY CREATION"/>  

name属性表示“资源名称”。它基本上是资源的路径,相对于/resources文件夹。此属性优先于value属性。所以基本上你正在尝试创建

<img src="COMPANY CREATION" />

这个不对。JSF 将改为自动生成RES_NOT_FOUNDURL。您应该已经在生成的 HTML 输出中看到了这一点。

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

<p:graphicImage name="images/#{image}" title="COMPANY CREATION" />

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

<p:graphicImage value="/resources/images/#{image}" title="COMPANY CREATION" />
于 2013-09-09T00:03:55.620 回答