【发布时间】: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属性替换为name或url?此外,<ui:repeat>在这里完全没有必要。摆脱它。循环由<p:galleria>自己处理(<p:galleria>中缺少value属性。利用它正确地完全删除<ui:repeat>)。 -
@Tiny 看起来问题出在使用重新定义
image变量的<ui:repeat>。 -
删除
并放置 value 属性(使用与上图相同的参数)没有帮助。此外,将“value”更改为“name”或“url”也无济于事。 -
您的意思是
<p:graphicImage>而不是<h:graphicImage>? -
您使用的是哪个 PrimeFaces 和 JSF 版本?
标签: jsf primefaces galleria