从其他站点重定向后,如何保持活动选项卡?在我的界面上,我想在用户使用第三方服务进行信用卡授权后,在选项卡窗口上返回信息。
我有Primefaces做的前端。
xhtml:上的选项卡视图
<p:tabView id="mytabs" styleClass="mystyle" style="min-height: 600px;" activeIndex="#{backinBean.getActiveTab}">
<p:tab title="tab" titleStyleClass="mystyle">
<ui:include src="reports.xhtml"/>
</p:tab>
</p:tabView>
</p:tab>
<p:tab id="anothertab" title="Another tab" titleStyleClass="myclass"
<ui:include src="2ndtab.xhtml"/>
</p:tab>
</p:tabView>
我的backinBean:
private Integer activeTab = 0;
public Integer getActiveTab() {
return activeTab;
}
public void setActiveTab(Integer activeTab) {
this.activeTab = activeTab;
}
reports.xhtml包含一个按钮,用于将用户引导到信用卡授权服务。授权后,用户被重定向回我的网站,那里的信息应该显示在同一个选项卡上,该选项卡上有auth服务按钮。信息显示正确,但客户端不会保持选项卡处于活动状态。如何做到这一点?
此问题的测试解决方案不起作用。重定向页面显示index.xhtml 上的第一个选项卡后
index.xhtml选项卡
<p:tabView id="mytabs" styleClass="mystyle" style="min-height: 600px;">
<p:ajax event="tabChange" listener="#{backinBean.onTabChange}" />
<p:tab title="tab" titleStyleClass="mystyle">
<ui:include src="firstTab"/>
</p:tab>
</p:tabView>
</p:tab>
<p:tab id="wantedActiveTab" title="Another tab" titleStyleClass="myclass"
<ui:include src="2ndtab.xhtml"/>
</p:tab>
</p:tabView>
backinBean:
private Integer activeTab = 0;
public void onTabChange(TabChangeEvent event) {
TabView tabView = (TabView) event.getComponent();
activeTab = tabView.getChildren().indexOf(event.getTab());
}
差不多到了。您不应该从p:tabView
中删除activeIndex="#{backinBean.activeTab}"
。此外,您的EL中有一个拼写错误。您不应该使用getActiveTab
来获取activeTab
,只需使用activeTab
即可。
此外,在这种情况下,bean的作用域应该设置为@SessionScoped
。
另请参阅:
- EL#{bean.id}如何调用托管bean方法bean.getId((
- 如何选择正确的bean作用域