我对三种类型的用户使用相同的页面,标题取决于我选择的链接:User1可以看到link1,user2可以看到link1和link2,user3可以看到link1,link2和link3。
在链接中指定了一个定义页面标题的请求参数:
menu enrty1: http://x.y.com/.../subscriptionListView.xhtml?的 listViewName = myParamForPageTitle1 menu entry2:http://x.y.com/.../subscriptionListView.xhtml? listViewName = myParamForPageTitle2 菜单条目3:http://x.y.com/.../subscriptionListView.xhtml? listViewName = myParamForPageTitle3
然后在页面中我有<c:if test
来设置标题:
<ui:composition
...
<ui:define name="metadata">
<c:if test="#{subscriptionListController.model.listViewName eq 'mySubscriptions'}">
<ui:param name="title" value="#{msg.subscriptionTitleMySubscriptions}"/>
</c:if>
<c:if test="#{subscriptionListController.model.listViewName eq 'paidSubscriptions'}">
<ui:param name="title" value="#{msg.subscriptionTitlePaidSubscriptions}"/>
</c:if>
<c:if test="#{subscriptionListController.model.listViewName eq 'allSubscriptions'}">
<ui:param name="title" value="#{msg.subscriptionTitleAllSubscriptions}"/>
</c:if>
<f:metadata>
<f:viewParam name="listViewName" value="#{subscriptionListController.model.listViewName}"/>
...
在相应的bean中,listViewName
默认值设置为myParamForPageTitle1
关注页面有一个订阅列表,每个条目都有一个相关的复选框。 当我检查订阅时,必须禁用/启用与同一用户相关的所有其他订阅的复选框。
我使用f:ajax事件:
执行此操作<td>
<h:selectBooleanCheckbox id="personalNumber"
class="cb"
value="#{listRow.rowData.personalNumber}"
disabled="#{logic to disable/enable}" >
<f:ajax event="change" execute="@this" render="@all" listener="#{listController.setPersonalNumber(listRow.rowData.dbId)}"/>
</h:selectBooleanCheckbox>
</td>
问题是,当我从link3加载页面并选中一个复选框并且由于 render =“@ all”而重新加载页面时,标题将更改为默认值。
f:viewParam还有一些效果吗?是使用 render =“@ all”
再次传递的请求参数