【问题标题】:<p:graphicImage> not working in jsf<p:graphicImage> 在 jsf 中不起作用
【发布时间】:2013-09-11 06:42:45
【问题描述】:

我最近在我的 JSF 页面中添加了 &lt;p:galleria&gt;,如 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

【问题讨论】:

    标签: jsf primefaces graphicimage


    【解决方案1】:

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

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

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

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

    <img src="COMPANY CREATION" />
    

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

    如果您的意图是将“COMPANY CREATION”显示为工具提示,那么正确的方法是

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 2011-03-30
      相关资源
      最近更新 更多