Javascript Primefaces Galleria将图像设置为在pageload上显示

Javascript Primefaces Galleria将图像设置为在pageload上显示,javascript,jsf,primefaces,Javascript,Jsf,Primefaces,我有一个带有x个图像的galleria对象,每次我进入页面时,都会显示第一个图像。 但是我想显示第二个图像,这取决于方法返回值 我知道显示的图像的值为display:list item,其他所有图像的值为display:none,但我不知道如何以编程方式设置它 有什么好主意吗,拉尔夫 根据您的需要,您可以通过以下任一方法实现: 第一种方法: 页面加载后的手动选择,例如: xhtml 这里要注意的是,在这种方法中,您正在更改该页面中包含的所有Galleria组件,例如,如果您在同一最终页面中定义了

我有一个带有x个图像的galleria对象,每次我进入页面时,都会显示第一个图像。 但是我想显示第二个图像,这取决于方法返回值

我知道显示的图像的值为display:list item,其他所有图像的值为display:none,但我不知道如何以编程方式设置它


有什么好主意吗,拉尔夫

根据您的需要,您可以通过以下任一方法实现:

第一种方法:

页面加载后的手动选择,例如:

xhtml

这里要注意的是,在这种方法中,您正在更改该页面中包含的所有Galleria组件,例如,如果您在同一最终页面中定义了两个Galleria,那么它们都以相同的活动索引结束,如果您有这种情况,您可以检查widgetVar名称是否相等,并相应地执行


我会选择第二种方法,因为从用户体验的角度来看,这似乎更自然。

第二种方法对我很有效。谢谢我还有一个Ajax上传按钮,可以为galleria添加图像。galleria的更新应该跳转到此新添加的图像,而不是停留在上一个选择上。@Ralf good,如果对您有效,您可以将答案标记为已接受。至于Ajax上传按钮,在Ajax调用的oncomplete上,您可以调用类似以下内容的内容
PF('galleriaWV')。选择(PF('galleriaWV')。frames.length-1,true)
<p:galleria widgetVar="galleriaWV">
   ...
</p:galleria>
<script>
//<![CDATA[
    function changeActiveIndex(widgetVar, index, reposition) {
        if (widgetVar && index) {
            widgetVar.select(index, reposition);
        }
    }

    $(document).ready(function () {
        setTimeout(function () {
            changeActiveIndex(PF('galleriaWV'), 2, false);
        }, 500);
    }); 
//]]>
</script>
<script>
//<![CDATA[
    function changeActiveIndex(index) {
        var oldRender = PrimeFaces.widget.Galleria.prototype._render;

        PrimeFaces.widget.Galleria.prototype._render = function () {
            this.cfg.activeIndex = index;
            oldRender.apply(this, []);
        }
    }

    changeActiveIndex(2);// to get the active image from bean, replace 2 with #{beanName.intIndexOfActiveImage} for example
//]]>
</script>