【问题标题】:p:graphicimage not workingp:图形图像不工作
【发布时间】:2014-06-05 22:42:46
【问题描述】:

几天来,我一直在寻找解决我的 JSF 问题的方法,并尝试了所有可能的解决方案。没有任何效果。

我想实现一个 jsf Galleria,比如 this one。代码不起作用,页面中没有显示任何内容。

这是我的豆子:

import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;

@ManagedBean(name="myGallery")
@ApplicationScoped
public class GalleriaBean {

private List<String> images;

private String effect = "fade";

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

    for(int i=1;i<=4;i++) {
        images.add("gallery" + i + ".jpg");
    }
}

public List<String> getImages() {
    return images;
}

public String getEffect() {
    return effect;
}

public void setEffect(String effect) {
    this.effect = effect;
}
}

以下代码将是我的 xhtml 内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui"> 

<h:head></h:head> 
<h:body>
    <h:panelGroup>
    <p:galleria effect="#{myGallery.effect}" var="image" effectSpeed="1000" styleClass=".ui-galleria-image-thumb-nav-left">  
        <ui:repeat value="#{myGallery.images}" var="image">  
            <h:graphicImage value="resources/images/#{image}" title="#{image}"/>  
        </ui:repeat>  
    </p:galleria>
</h:panelGroup>
</h:body> 
</html>            

您可能已经注意到,我使用的是 .使用此设置,我的所有图像都以垂直列表的形式放入页面中,没有淡入淡出过渡或任何其他画廊类型。如果我替换为 ,我的页面将完全空白,并且根本不会显示图像。

这可能是什么原因?为了使画廊看起来像上面页面上的那样,我需要添加什么?

【问题讨论】:

  • 检查网址。您是否尝试将value 属性替换为nameurl?此外,&lt;ui:repeat&gt; 在这里完全没有必要。摆脱它。循环由&lt;p:galleria&gt; 自己处理(&lt;p:galleria&gt; 中缺少value 属性。利用它正确地完全删除&lt;ui:repeat&gt;)。
  • @Tiny 看起来问题出在使用重新定义 image 变量的 &lt;ui:repeat&gt;
  • 删除 并放置 value 属性(使用与上图相同的参数)没有帮助。此外,将“value”更改为“name”或“url”也无济于事。
  • 您的意思是&lt;p:graphicImage&gt; 而不是&lt;h:graphicImage&gt;
  • 您使用的是哪个 PrimeFaces 和 JSF 版本?

标签: jsf primefaces galleria


【解决方案1】:

好的,问题似乎是我没有将PrimeFaces库(jar)放在WEB-INF的lib文件夹中。此外,我确保我有用于 GalleriaBean 中所有属性的 setter 和 getter。希望这对任何人都有帮助。

【讨论】:

    【解决方案2】:

    你,

    使用此代码运行 :)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"> 
    
        <h:head></h:head> 
        <h:body>
            <h:panelGroup>
            <p:galleria effect="#{myGallery.effect}" value="#{myGallery.images}" var="image" effectSpeed="1000" styleClass=".ui-galleria-image-thumb-nav-left">  
    
                    <p:graphicImage name="pathDirectory/#{image}" title="#{image}"/>  
    
            </p:galleria>
        </h:panelGroup>
        </h:body> 
        </html> 
    

    您可以在 PrimeFaces 网站中使用example

    【讨论】:

    • 没有,我仍然看到一个空白页:(我的问题可能出在其他地方吗?缺少某些库?版本问题?
    • 空白页,因为在您的页面上的 index.jsf 中,您包含 Jquery。您不必包含它,因为它包含在 primefaces 中。如果不工作再把你所有的页面html代码
    • 我不确定我是否理解,我没有包含 JQuery,也没有使用任何 .jsf 文件。你能更精确一点吗?谢谢!
    • 只是您没有在页面中包含 Jquery,因为 Jquery 已包含在 primefaces 中。当您包含 primefaces 时,会自动包含 Jquery。 (如果能解决您的问题,请记得投票给我的回复)
    • 我不确定我能跟上。据我了解,我不必包括 JQuery。您上面的代码没有为我显示任何内容 - 它对您有用吗?如果是,问题可能出在其他地方......还有其他想法吗?谢谢!
    猜你喜欢
    • 2019-11-12
    • 2017-01-13
    • 2013-07-15
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多