页面重新加载期间请求参数仍然有效,使用render =“@ all”进行f:ajax

时间:2014-08-08 14:43:41

标签: jsf jsf-2 facelets

我对三种类型的用户使用相同的页面,标题取决于我选择的链接: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”

再次传递的请求参数

0 个答案:

没有答案