几周前,我开始与一家新公司的搭档,他们正在使用 PrimeFaces 使用 Java EE 。我对Java或Primefaces不太了解,所以我有点丢失(就像我的英语一样(。
他们要求我制作步骤组件,但是组件无法按照他们的需求工作。他们需要该组件在单击下一步时不会禁用您的位置,我的意思是,如果您处于第四步,他们也希望让它启用,即使您向后移动。
我试图使其有效地将可读属性更改为false,使用一些带有某些变量的JavaScript启用链接(但这会使我的Proyect崩溃(,请使用我使用的Java EE来更改java ee.ui-step-number,但不适用于链接...
<p:steps widgetVar="steps" id="steps" readonly="false" activeIndex="#{actemplate.seccionRenovacion}" style="border: none; height: auto; width: 100%; font-weight: bold;">
<p:menuitem id="menu_step1" class="menuItemRenewal" value="#{texto['ac_menu_step1']}" style="color: #{actemplate.pasoRenovacion gt 1 ? 'green;' : ''}"/>
<p:menuitem id="menu_step2" class="menuItemRenewal" value="#{texto['ac_menu_step2']}" outcome="tratamientos" style="color: #{actemplate.pasoRenovacion gt 2 ? 'green;' : ''}"/>
<p:menuitem id="menu_step3" class="menuItemRenewal" value="#{texto['ac_menu_step3']}" outcome="personal" style="color: #{actemplate.pasoRenovacion gt 3 ? 'green;' : ''}"/>
<p:menuitem id="menu_step4" class="menuItemRenewal" value="#{texto['ac_menu_step4']}" outcome="encargados" style="color: #{actemplate.pasoRenovacion gt 4 ? 'green;' : ''}"/>
<p:menuitem id="menu_step5" class="menuItemRenewal" value="#{texto['ac_menu_step5']}" outcome="sitios_web" style="color: #{actemplate.pasoRenovacion gt 5 ? 'green;' : ''}"/>
</p:steps>
当您进入下一步时,您可以单击以前的步骤,但是当您的页面更改时,您无法直接转到您正在工作的页面(如果您在第3页,然后转到第1页,您不能直接转到第3页,您需要再次迈出一步(。
我有解决方案,但是使用 javascript ,我不知道如何使其与Java一起使用,但是我会在这里发布它,因此,如果其他人都有同样的问题,我希望它也适用于您的代码。
<script>
var item1 = document.getElementById("menuform:menu_step1");
var item2 = document.getElementById("menuform:menu_step2");
var item3 = document.getElementById("menuform:menu_step3");
var item4 = document.getElementById("menuform:menu_step4");
var item5 = document.getElementById("menuform:menu_step5");
// Step 1
if(#{actemplate.pasoRenovacion} >= 1){
item1.setAttribute("href", "mi_entidad.xhtml");
item1.setAttribute("onclick", true);
item1.style.cursor = "pointer";
// Step 2
if(#{actemplate.pasoRenovacion} >= 2){
item2.setAttribute("href", "tratamientos.xhtml");
item2.setAttribute("onclick", true);
item2.style.cursor = "pointer";
// Step 3
if(#{actemplate.pasoRenovacion} >= 3){
item3.setAttribute("href", "personal.xhtml");
item3.setAttribute("onclick", true);
item3.style.cursor = "pointer";
// Step 4
if(#{actemplate.pasoRenovacion} >= 4){
item4.setAttribute("href", "encargados.xhtml");
item4.setAttribute("onclick", true);
item4.style.cursor = "pointer";
// Step 5
if(#{actemplate.pasoRenovacion} >= 5){
item5.setAttribute("href", "sitios_web.xhtml");
item5.setAttribute("onclick", true);
item5.style.cursor = "pointer";
}
}
}
}
}
</script>
因此,首先,我用对象' steps '的所有元素制作 variable 。它还必须与 jQuery 一起使用,但是公司没有实施,因此我与 dom 。
一起工作之后,我从 bean 中捕获了 Java变量,当您传递到下一步时,它将一对一添加。由于我们有,您可以简单地"如果"(我使用它嵌套(。
最后,您可以将想要的属性设置为元素。我设置了href和click event(,两个是重要的,因为"步骤"元素将 href更改为#,而单击事件到false <</strong>,当您不通过步骤时,随着该更改,您现在可以单击您目前的步骤,或者如果您转到阶跃上一个步骤(,并将样式赋予光标,以使外观就像您在链接上一样。