我正在使用p:tabMenu组件。我有4个菜单项,每个都重定向到不同的jsf页面,但问题是返回的页面没有更改activeindex,而activeindex与初始值0保持一致。
此代码位于所有页面的模板页面
<h:form>
<p:tabMenu activeIndex="0">
<p:menuitem value="Home" url="Menu.jsf" icon="ui-icon-star" />
<p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" icon="ui-icon-wrench" />
<p:menuitem value="Composants" url="/pagess/pagesComposant/Composant.jsf" icon="ui-icon-search" />
<p:menuitem value="Dossier d'equivalence" url="DEQ.jsf" icon="ui-icon-document" />
</p:tabMenu>
</h:form>
如果知道应该自动更改,我该如何解决这个问题?
我托盘一个托管bean无法正常工作
public class LoginBean {
private int activeindex=0;
public int getActiveindex() {
return activeindex;
}
public void setActiveindex(int activeindex) {
this.activeindex = activeindex;
}
public void Dirige(int a){
activeindex=a;
}}..
<p:tabMenu activeIndex="#{loginBean.activeindex}" >
<p:menuitem value="Home" url="Menu.jsf" icon="ui-icon-star" action="#{loginBean.Dirige(0)}"/>
<p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" icon="ui-icon-wrench" action="#{loginBean.Dirige(1)}"/>
</p:menuitem>
它也不起作用
我尝试为everu menuitem添加update =“@ all”。它是相同的:(
我忘了告诉你。这个组件在模板页面上..所有页面都使用这个模板 ! 当页面在braowser上收费时它会占用模板的属性, 在模板上代码是
<h:form>
<p:tabMenu activeIndex="0">
<p:menuitem value="Home" url="Menu.jsf" icon="ui-icon-star" />
<p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" icon="ui-icon-wrench" />
<p:menuitem value="Composants" url="/pagess/pagesComposant/Composant.jsf" icon="ui-icon-search" />
<p:menuitem value="Dossier d'equivalence" url="DEQ.jsf" icon="ui-icon-document" />
</p:tabMenu>
</h:form>
它显示0上的活动索引,为此我重定向的所有页面都没有同步活动索引.. 有什么好感的吗
答案 0 :(得分:0)
我认为只能更新动作方法中的组件树。
您可以在动作方法中动态修改组件并同样设置活动索引。
这是tabMenu组件api,供进一步参考。
http://www.primefaces.org/docs/api/3.5/org/primefaces/component/tabmenu/TabMenu.html
public void getFooClientId(int activeIndex) {
FacesContext context = FacesContext.getCurrentInstance();
UIViewRoot root = context.getViewRoot();
final String componentId = "foo";
UIComponent c = findComponent(root, componentId);
TabMenu t = (TabMenu)c;
t.setActiveIndex(activeIndex);
}
/**
* Finds component with the given id
*/
private UIComponent findComponent(UIComponent c, String id) {
if (id.equals(c.getId())) {
return c;
}
Iterator<UIComponent> kids = c.getFacetsAndChildren();
while (kids.hasNext()) {
UIComponent found = findComponent(kids.next(), id);
if (found != null) {
return found;
}
}
return null;
}