有条件地设置ui:param

 心韵怡怡雅琦 发布于 2023-02-12 22:04

我想根据bean值设置一个ui:param,我想用c:if是个好主意.所以我在我的页面中输入以下代码:



        
         
        
        
         
        
        
         
        
        ....

但参数未设置...

如果我打印出来的值,#{subscriptionListController.model.listViewName eq 'mySubscriptions'}我会在相应的情况下得到真值,而在其他两种情况下则为假.

一开始我只有两种可能性并用三元运算符解决了它:


它起作用了.但现在我有更多的可能性......

我究竟做错了什么?

1 个回答
  • 如图所示<ui:composition template>,此页面代表模板客户端.

    任何<ui:param>外部都<ui:define>适用于主模板(您在template属性中声明的文件),并在模板客户端本身内被忽略.如果您打算在模板客户端内部准备变量,则应将其置于<ui:param>内部<ui:define>.

    但还有另一件事:最初的目的<ui:param>是将变量传递给引用的文件<ui:composition template>,<ui:decorate template>或者<ui:include src>不在当前facelet上下文中准备/设置变量.对于在当前EL上下文中准备/设置变量的唯一功能要求,您最好使用JSTL <c:set>来完成工作.您可以使用<ui:param>此功能,但这不是它的原始意图,并且在较旧的MyFaces版本中不起作用.

    因此,所以:

    <ui:define>
        <c:if test="#{subscriptionListController.model.listViewName eq 'mySubscriptions'}">
            <c:set var="title" value="#{msg.subscriptionTitleMySubscriptions}"/>
        </c:if>
        <c:if test="#{subscriptionListController.model.listViewName eq 'paidSubscriptions'}">
            <c:set var="title" value="#{msg.subscriptionTitlePaidSubscriptions}"/>
        </c:if>
        <c:if test="#{subscriptionListController.model.listViewName eq 'allSubscriptions'}">
            <c:set var="title" value="#{msg.subscriptionTitleAllSubscriptions}"/>
        </c:if>
        ...
    </ui:define>
    

    具体问题无关,您可以按如下方式对其进行优化,而不需要一个<c:if>只能在每个订阅类型中增长的不可维护的组:

    <ui:define>
        <c:set var="subscriptionTitleKey" value="subscriptionTitle.#{subscriptionListController.model.listViewName}">
        <c:set var="title" value="#{msg[subscriptionTitleKey]}"/>
        ...
    </ui:define>
    

    用那些钥匙

    subscriptionTitle.mySubscriptions = Title for my subscriptions
    subscriptionTitle.paidSubscriptions = Title for paid subscriptions
    subscriptionTitle.allSubscriptions = Title for all subscriptions
    

    2023-02-12 22:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有