PrimeFaces ImageSwitch组件在最后一张图像上停止

时间:2018-07-26 21:17:48

标签: jsf primefaces

我的代码如下:

<p:imageSwitch effect="none" slideshowAuto="false" widgetVar="images">
    <ui:repeat var="image" value="#{indexController.cd.imagesView}">
        <o:graphicImage value="#{imagesController.get(indexController.name, image)}" />
    </ui:repeat>
</p:imageSwitch>

和这个bean来加载图像

@GraphicImageBean
public class ImagesController implements Serializable {
    private static final long serialVersionUID = 6497820188225935778L;

    private static final String APP_PATH = System.getProperty("application.path");

    public byte[] get(String name, String file) {           
        String path = APP_PATH.concat(name).concat(File.separator).concat(file);

        try {
            return Files.readAllBytes(Paths.get(path));
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }
}

我需要当它在最后一个图像中时,组件停止并且不要再次进入第一个图像。

有办法做到吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

是的。首先让我们向您展示如何停止幻灯片放映。在此处转到PrimeFaces展示柜:https://www.primefaces.org/showcase/ui/multimedia/switch.xhtml

在浏览器中打开一个JavaScript控制台,然后输入:

PF('widget_j_idt638').stopSlideshow();

是否注意到“缩放”幻灯片已停止?因此,“ widget_j_idt638”是一个名称不正确的widgetvar,您将其称为widgetVar =“ images”,这样您就可以...

PF('images').stopSlideshow();

现在,从阅读ImageSwitch使用的Jquery Cycle plugin文档开始,可以找到一种自动停止方法。

  

autostop:0,//为true,在X过渡后结束幻灯片   (其中X ==幻灯片计数)

因此要在您的页面上启用此功能,只需添加此内联脚本即可在页面加载后运行...

$(document).ready(function() {
   PF('images').jq.cycle({autostop:1});
});

可以解决问题。我刚刚在PrimeFaces展示柜中对其进行了测试。