不要在facelets中重复表情
您是否曾经在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中重复表情相关推荐
- facelets_不要在facelets中重复表情
facelets 您是否曾经在JSF中看到过像这样的重复EL表达式? <h:inputText value="#{oneBean.name}" rendered=" ...
- [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组. 刚开始复习js题还不太习惯 CSDN上看了一个帖子,说是牛客上的标答, ...
- java中json重复数据结构_JS实现去除数组中重复json的方法示例
本文实例讲述了JS实现去除数组中重复json的方法.分享给大家供大家参考,具体如下: var array = [{"name":"123"},{"na ...
- 剑指offer: 面试题03. 数组中重复的数字
题目:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...
- 【Java面试题】54 去掉一个Vector集合中重复的元素
在Java中去掉一个 Vector 集合中重复的元素 1)通过Vector.contains()方法判断是否包含该元素,如果没有包含就添加到新的集合当中,适用于数据较小的情况下. import jav ...
- php 去掉数组相同元素,php怎么去掉数组中重复的元素
php去掉数组中重复的元素的方法:可以通过内置函数array_unique()来实现.array_unique()函数可以移除数组中重复的值并返回过滤后的数组.如果数组中存在多个相同元素,则只保留第一 ...
- python去重复行_python去除文件中重复的行实例
python去除文件中重复的行,我们可以设置一个一个空list,res_list,用来加入没有出现过的字符行! 如果出现在res_list,我们就认为该行句子已经重复了,可以再加入到记录重复句子的li ...
- 【Java】牛客网 删除链表中重复的结点
题目描述 : 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表 1->2->3->3->4->4->5 ...
- 【MySQL】面试官:如何查询和删除MySQL中重复的记录?
写在前面 最近,有小伙伴出去面试,面试官问了这样的一个问题:如何查询和删除MySQL中重复的记录?相信对于这样一个问题,有不少小伙伴会一脸茫然.那么,我们如何来完美的回答这个问题呢?今天,我们就一起来 ...
最新文章
- Mybatis自定义排序
- POJ-1182 食物链(并查集)
- Java学习笔记10
- Windows内核新手上路2——挂钩shadow SSDT
- python编程入门p-Python是什么?简单了解pythonp-入门
- LA3029最大子矩阵
- MapReduce基础开发之十读写ORC File
- 不允许一个迭代的对象自己接着迭代下去(Python)【fronzenset】
- VS如何更改项目类型?
- 使用思科模拟器Packet Tracer与GNS3配置IPv6隧道
- 单例模式以及在C#中的使用
- linux C下的setjmp与longjmp介绍
- JavaWEB开发国际化
- 【软碟通 | UltraISO】刻录光盘教程(制作U盘启动盘)
- 加拿大大学商用计算机专业,加拿大大学计算机专业排名一览
- 42条风景优美至今基本完整的宁波古道(转)
- 1 dB压缩点_噪声系数_小信号非线性的数学描述
- deepin系统15.6版本安装执行那个exe文件_秒杀一众PE系统,制作强大的U盘启动系统,自制新一代装机神器
- alertdialog旋转屏幕消失造成leak window
- mysql 1146 错误解决方法
热门文章
- oracle基本笔记整理
- MySQL笔记汇总---狂神说
- [译] RESTful API 设计最佳实践
- java出代码1601_LeetCode 1601. 最多可达成的换楼请求数目
- 分类器评估参数——准确度和精度的区别(足球荔枝)
- ReviewForJob——二叉堆优先队列的实现(三种堆节点类型——int + struct HeapNode + struct HeapNode*)
- tomat(16)关闭钩子
- maven安装教程安装教程_Maven教程之春
- hibernate删除记录_Hibernate记录:常见问题的提示和解决方案
- 多线程线程池的实现java_如何在Java中实现线程池