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