您是否曾经在JSF中看到过像这样的重复EL表达式?

<h:inputText value="#{oneBean.name}" rendered="#{anotherBean.showPerson}"/>
<h:inputText value="#{oneBean.birthday}" rendered="#{anotherBean.showPerson}"/>
<h:selectOneMenu value="#{oneBean.children}" style="#{anotherBean.showPerson ? 'display:block' : 'display:none'}"/>

usw。 另一个例子:

<ui:include src="/include/somesnippet.xhtml"><ui:param name="age" value="#{someBean.isMan(person) ? 63 : 60}"/><ui:param name="money" value="#{someBean.isMan(person) and someBean.getCountry(person) eq 'de' ? 1000 : 900}"/><ui:param name="big" value="#{someBean.getCountry(person) eq 'zh' or someBean.getCountry(person) eq 'ru' ? true : false}"/>
</ui:include>

#{anotherBean.showPerson},#{someBean.isMan(person)},#{someBean.getCountry(person)}重复多次。 如何优化它们? 好了,您可以像以下代码片段一样使用JSTL的c:set:

<c:set var="showPerson" value="#{anotherBean.showPerson}"/><h:inputText value="#{oneBean.name}" rendered="#{showPerson}"/>
<h:inputText value="#{oneBean.birthday}" rendered="#{showPerson}"/>
<h:selectOneMenu value="#{oneBean.children}" style="#{showPerson ? 'display:block' : 'display:none'}"/><c:set var="man" value="#{someBean.isMan(person)}"/>
<c:set var="country" value="#{someBean.getCountry(person)}"/><ui:include src="/include/somesnippet.xhtml"><ui:param name="age" value="#{man ? 63 : 60}"/><ui:param name="money" value="#{man and country eq 'de' ? 1000 : 900}"/><ui:param name="big" value="#{country eq 'zh' or country eq 'ru' ? true : false}"/>
</ui:include>

如果您担心JSTL的陷阱(因为您听说JSTL并不总是对JSF友好!),那么可以使用另一种简单的替代方法ui:param。 TagHandler ui:param使用JSF的VariableMapper将EL表达式保存在地图中。 该映射将页面上的EL变量及其关联的EL表达式映射。 在这里,您去:

<ui:param name="showPerson" value="#{anotherBean.showPerson}"/><h:inputText value="#{oneBean.name}" rendered="#{showPerson}"/>
<h:inputText value="#{oneBean.birthday}" rendered="#{showPerson}"/>
<h:selectOneMenu value="#{oneBean.children}" style="#{showPerson ? 'display:block' : 'display:none'}"/><ui:param name="man" value="#{someBean.isMan(person)}"/>
<ui:param name="country" value="#{someBean.getCountry(person)}"/><ui:include src="/include/somesnippet.xhtml"><ui:param name="age" value="#{man ? 63 : 60}"/><ui:param name="money" value="#{man and country eq 'de' ? 1000 : 900}"/><ui:param name="big" value="#{country eq 'zh' or country eq 'ru' ? true : false}"/>
</ui:include>

该代码更具可读性,尤其是当您具有非常复杂且很长的表达式时。 注意:我们在这里谈论的是可读代码,而不是性能优化,因为JSF TagHandlers不评估EL表达式。

翻译自: https://www.javacodegeeks.com/2014/11/dont-repeat-expressions-in-facelets.html

不要在facelets中重复表情相关推荐

  1. facelets_不要在facelets中重复表情

    facelets 您是否曾经在JSF中看到过像这样的重复EL表达式? <h:inputText value="#{oneBean.name}" rendered=" ...

  2. [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。

    请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组. 刚开始复习js题还不太习惯 CSDN上看了一个帖子,说是牛客上的标答, ...

  3. java中json重复数据结构_JS实现去除数组中重复json的方法示例

    本文实例讲述了JS实现去除数组中重复json的方法.分享给大家供大家参考,具体如下: var array = [{"name":"123"},{"na ...

  4. 剑指offer: 面试题03. 数组中重复的数字

    题目:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...

  5. 【Java面试题】54 去掉一个Vector集合中重复的元素

    在Java中去掉一个 Vector 集合中重复的元素 1)通过Vector.contains()方法判断是否包含该元素,如果没有包含就添加到新的集合当中,适用于数据较小的情况下. import jav ...

  6. php 去掉数组相同元素,php怎么去掉数组中重复的元素

    php去掉数组中重复的元素的方法:可以通过内置函数array_unique()来实现.array_unique()函数可以移除数组中重复的值并返回过滤后的数组.如果数组中存在多个相同元素,则只保留第一 ...

  7. python去重复行_python去除文件中重复的行实例

    python去除文件中重复的行,我们可以设置一个一个空list,res_list,用来加入没有出现过的字符行! 如果出现在res_list,我们就认为该行句子已经重复了,可以再加入到记录重复句子的li ...

  8. 【Java】牛客网 删除链表中重复的结点

    题目描述 : 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表 1->2->3->3->4->4->5 ...

  9. 【MySQL】面试官:如何查询和删除MySQL中重复的记录?

    写在前面 最近,有小伙伴出去面试,面试官问了这样的一个问题:如何查询和删除MySQL中重复的记录?相信对于这样一个问题,有不少小伙伴会一脸茫然.那么,我们如何来完美的回答这个问题呢?今天,我们就一起来 ...

最新文章

  1. Mybatis自定义排序
  2. POJ-1182 食物链(并查集)
  3. Java学习笔记10
  4. Windows内核新手上路2——挂钩shadow SSDT
  5. python编程入门p-Python是什么?简单了解pythonp-入门
  6. LA3029最大子矩阵
  7. MapReduce基础开发之十读写ORC File
  8. 不允许一个迭代的对象自己接着迭代下去(Python)【fronzenset】
  9. VS如何更改项目类型?
  10. 使用思科模拟器Packet Tracer与GNS3配置IPv6隧道
  11. 单例模式以及在C#中的使用
  12. linux C下的setjmp与longjmp介绍
  13. JavaWEB开发国际化
  14. 【软碟通 | UltraISO】刻录光盘教程(制作U盘启动盘)
  15. 加拿大大学商用计算机专业,加拿大大学计算机专业排名一览
  16. 42条风景优美至今基本完整的宁波古道(转)
  17. 1 dB压缩点_噪声系数_小信号非线性的数学描述
  18. deepin系统15.6版本安装执行那个exe文件_秒杀一众PE系统,制作强大的U盘启动系统,自制新一代装机神器
  19. alertdialog旋转屏幕消失造成leak window
  20. mysql 1146 错误解决方法

热门文章

  1. oracle基本笔记整理
  2. MySQL笔记汇总---狂神说
  3. [译] RESTful API 设计最佳实践
  4. java出代码1601_LeetCode 1601. 最多可达成的换楼请求数目
  5. 分类器评估参数——准确度和精度的区别(足球荔枝)
  6. ReviewForJob——二叉堆优先队列的实现(三种堆节点类型——int + struct HeapNode + struct HeapNode*)
  7. tomat(16)关闭钩子
  8. maven安装教程安装教程_Maven教程之春
  9. hibernate删除记录_Hibernate记录:常见问题的提示和解决方案
  10. 多线程线程池的实现java_如何在Java中实现线程池