facelets_不要在facelets中重复表情

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言与Java的深情对话:儿子,还得多练几年啊!老子还是老子

很多小伙伴都老是会碰到疑问&#xff0c;其实还是基础没打扎实&#xff0c;这些题如果你不看答案你能知道多少呢&#xff1f;如果还有很多不知道就证明基础没打扎实&#xff0c;如果你还在入门纠结&#xff0c;如果你还在苦恼怎么入门&#xff01;小编有个建议&#xff0c;可以…

Servlet和JSP之间的区别

JSP和Servlet都是与使用Java构建基于Web的应用程序有关的重要概念。 基本上&#xff0c;Servlet是Java中HTML&#xff0c;而JSP是HTML中的Java。 任何典型的Web开发面试都可能有几个基于JSP和Servlet的Java面试问题 。 尽管JSP和Servlet的主要目的是相同的&#xff0c;但是两者…

BAT人脸识别功能第二步-人脸检测

今晚课题点击【阅读原文】或长按图片【识别图中的二维码】即可参加今晚的课程。

java emptylist_Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方...

先说明一下好处有哪些&#xff1a;1&#xff0c;如果你想 new 一个空的 List &#xff0c;而这个 List 以后也不会再添加元素&#xff0c;那么就用 Collections.emptyList() 好了。new ArrayList() 或者 new LinkedList() 在创建的时候有会有初始大小&#xff0c;多少会占用一内…

java中插入排序实例_java中对插入排序的理解以及实例

一、基本思想通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸牌时&#xff0c;左手是空的&#xff0c;牌面朝下放在桌上。接着&#xff0c;一次从桌上摸起一张牌&a…

hazelcast入门教程_Hazelcast入门指南第3部分

hazelcast入门教程这是从初学者的角度来看一系列有关如何使用Hazelcast的文章的延续。 如果您还没有阅读最后两个&#xff0c;我鼓励阅读它们&#xff1a; Hazelcast入门指南第1部分 Hazelcast入门指南第2部分 原始人来了 在上一篇文章中&#xff0c;我提到将ILock与IList和…

经典游戏底层框架--迷宫游戏构成原理剖析

今晚课题点击【阅读原文】或长按图片【识别图中的二维码】即可参加今晚的课程。

突破100万年薪《多线程服务器端架构》

今晚课题点击【阅读原文】或长按图片【识别图中的二维码】即可参加今晚的课程。

Java中的观察者设计模式

在本教程中&#xff0c;我们将讨论Observer设计模式。 观察者模式有两个主要方面- 主题和观察者 。 当我们的系统有多个对象&#xff08;称为观察者&#xff09;时 &#xff0c;将使用一个模式&#xff0c;该对象依赖于一个特定对象&#xff08; 主体&#xff09;的状态 。 所…

java class api 中文乱码_SpringMVC之springmvc原始api,请求中文乱码问题

先搞一波效果图1.Controllerpackage com.tz.controller;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Required;import org.springframe…

从流水线工人,到谷歌上班的程序媛

非科班、转行当程序员的励志故事有很多&#xff0c;我们在 8 年前扩散分享过一个国外的故事&#xff1a;我来自于一个东欧国家。我在一个煤矿里工作了很多年&#xff08;在一个很深的矿井里&#xff09;。每天我都处在危险中&#xff0c;那些年都是这样度过的。后来我感觉过够了…

jpa 实体映射视图_JPA教程:实体映射-第2部分

jpa 实体映射视图在上一篇文章中&#xff0c;我展示了一种持久保存实体的简单方法。 我解释了JPA用于确定实体默认表的默认方法。 假设我们要覆盖此默认名称。 我们之所以喜欢这样做&#xff0c;是因为数据模型是以前设计和修复的&#xff0c;并且表名与我们的类名不匹配&#…

java顺序栈和链栈_Java的顺序栈和链式栈

栈的定义栈是限制在表的一段进行插入和删除的运算的线性表&#xff0c;通常能够将插入、删除的一端为栈顶&#xff0c;例外一端称为栈底&#xff0c;当表中没有任何元素的时候称为空栈。通常删除(又称“退栈”)叫做弹出pop操作&#xff0c;每次删除的都是栈顶最新的元素&#x…

Java:ChronicleMap第2部分,超级RAM映射

诸如无处不在的HashMap类的标准Java Map最终受到可用RAM的限制。 阅读本文并了解如何创建几乎无限大小甚至超过目标计算机的RAM大小的Java Map。 内置的Map实现&#xff0c;例如HashMap和ConcurrentHashMap &#xff0c;只要它们相对较小&#xff0c;就可以正常工作。 在所有情…

jsp中的java部分_jsp页面的七个组成部分

jsp页面的七个组成部分1. 静态内容&#xff1a;前端内容一行一行翻译成 out.write(“前端内容”);2. 指令&#xff1a; 第一个指令是pagepage指令的第一个标准用法&#xff0c;告诉servlet容器&#xff0c;这是一个jsp页面pageEncoding 指…

java多线程做一件事_关于Java的十件事

java多线程做一件事那么&#xff0c;您从一开始就一直在使用Java&#xff1f; 还记得那些被称为“ Oak”的日子&#xff0c;OO仍然是热门话题&#xff0c;C 人士认为Java没有机会&#xff0c;Applet还是一件事吗&#xff1f; 我敢打赌&#xff0c;您至少不了解以下一半内容。 …

java第二章复习_JAVA第二章知识点

JAVA第二章知识点本章知识梳理2.1 关键字2.2 标识符2.3 变 量2.4运算符2.5 程序流程控制2.6 方法2.1 关键字关键字(keyword)的定义和特点定义&#xff1a;被java语言赋予了特殊含义&#xff0c;用做专门用途的字符串(单词)特点&#xff1a;关键字中所有字母都为小写保留字(rese…

打造大型直播平台之《PC客户端架构》

今晚课题点击【阅读原文】或长按图片【识别图中的二维码】即可参加今晚的课程。

Java中的装饰器设计模式

装饰器设计模式允许在运行时将附加职责或行为动态附加到对象。 它是一种结构模式&#xff0c;利用聚合来组合这些行为。 在本教程中&#xff0c;我们将学习实现装饰器模式。 UML图&#xff1a; 让我们从装饰器模式的UML表示开始&#xff1a; ConcreteComponent类是我们希望为…

冲击波病毒攻击-《截获网站服务器数据》

今晚课题点击【阅读原文】或长按图片【识别图中的二维码】即可