Primefaces - p:carousel在Chrome和Internet Explorer中完全崩溃



我正在尝试在我的页面中实现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属性指向正确的目录。

相关内容

  • 没有找到相关文章