我正在尝试在我的页面中实现p:carousel。
但是,它完全被打破了。
我在Tomcat 7.0.52上运行Primefaces 5和JSF2.2,我在Chrome和Internet Explorer 8上都试过了。
我试着从Primefaces 5.0降级到4.0,没有任何区别。在<f:view contentType="text/html">
中也没有。
让我困惑的是,官方primefaces网站上的例子运行得非常好。
下面是我的代码:
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>title</title>
</h:head>
<body>
<p:carousel >
<p:graphicImage value="/images/cloudy.png" />
<p:graphicImage value="/images/rainy.png" />
<p:graphicImage value="/images/logo.gif" />
<p:graphicImage value="/images/redball.png" />
<p:graphicImage value="/images/yellowball.png" />
<p:graphicImage value="/images/greenball.png" />
</p:carousel>
</body>
</html>
不完全是火箭科学,嗯?
更新:
显然,问题在于并非所有的图像都具有相同的大小。具体来说,它们都是48x48,除了logo.gif
是300x111。移动图像,使logo.gif
是第一个似乎有某种固定它:现在旋转木马采取300x111作为每个组件和形状的大小相应。给图片一个固定的大小也可以。
我现在的问题是另一个:我使用旋转木马来显示没有固定大小的组件(<p:chart>
),它又坏了。如果我用<p:panel>
包装它们,并给面板一个固定的大小,它再次工作,但是固定的大小是丑陋的和不可接受的(它破坏了整个应用程序的样式)。
有别的办法吗?
我最终解决了这个问题。事实证明,p:carousel
的元素需要一个固定的宽度。
手动设置为400像素宽,400像素高,它开始工作了。
我认为标签的属性是"itemStyle"(或"itemStyleClass",如果你想使用一个类),但我不是100%确定(这是很久以前)。
我只是想分享一下我的解决方案,以防别人遇到同样的问题。
试试这个:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>title</title>
</h:head>
<h:body>
<p:carousel >
<p:graphicImage value="/images/cloudy.png" />
<p:graphicImage value="/images/rainy.png" />
<p:graphicImage value="/images/logo.gif" />
<p:graphicImage value="/images/redball.png" />
<p:graphicImage value="/images/yellowball.png" />
<p:graphicImage value="/images/greenball.png" />
</p:carousel>
</h:body>
</html>
我认识到如果你使用<body>
而不是<h:body>
, PrimeFaces 5.0就不能很好地工作。还要确保<p:graphicImage>
的value
属性指向正确的目录。