JSF EL简介

JSF EL简介

JSF中我们使用各种标签(Tag)来使用内建的或者自定义的组件,比如常用的h:outputText之类,你可以在faces-config.xml等配置文件中声明受管的JavaBean(Managed bean)。而JSF EL允许我们将Managed Bean的值绑定到组件的属性。

JSF EL和JSTL比较类似,但是它所用的是另外的函数和关键字,与JSTL使用${和}作为分隔符不同,JSF EL使用#{和}作为分隔符。

下面是一些有效的JSF EL的例子:

   #{Page1.name}
   #{Foo.bar}
   #{Foo[bar]}
   #{Foo[“bar”]}
   #{Foo[3]}
   #{Foo[3].bar}
   #{Foo.bar[3]}
   #{Customer.status == ‘VIP’}
   #{(Page1.City.farenheitTemp - 32) * 5 / 9}
   时间:从 #{Report.fromDate} 到 #{Report.toDate}

如果需要设置值(也就是向服务器提交值)那么只能用以下这些形式:

   用.分隔的表达式:#{expr-a.value-b}
   用[]分隔的表达式:#{expr-a[value-b]]
   只包含bean名字的表达式:#{value-b}

在JSF EL中,#{a.b}和{a[b]}的作用是相同的。这里的b不一定非得是JavaBean的一个属性,如果a是一个Map,那么#{a.b}的值相当于a.get("b")。如果a是一个List或者数组,那么b可以是一个数组的下标。

值得注意的是,在JavaBean中定义布尔型的get方法时候通常定义为isXXX()这样的签名,JSF EL是没有办法识别这样的getter的,你仍然需要定义一个getXXX()方法(返回值为boolean类型),这样JSF EL才能正确的得到对应的属性值


隐式对象

在JSF EL中可以使用这些隐式对象:


facesContext - 当前请求的 FacesContext 实例。 
param - 相当于request.getParameter 
paramValues - 相当于request.getParameterValues 
header - 相当于request.getHeader 
headerValues - 相当于request.getHeaders 
cookie - 相当于request.getCookies 
initParam - 相当于config.getInitParameters 

下面这些变量允许你访问各种不同scope中储存的变量:


requestScope - 将request scope的变量名称映射到它们的值中。 
sessionScope - 将session scope的变量名称映射到它们的值中。 
applicationScope - 将application scope的变量名称映射到它们的值中。

举例来说,在JSP中,你可以这样写:

<%= request.getParameter("paramName") %>

在JSF中,你可能是这样写:

<h:outputText value="#{param.paramName}" />

或者

<h:outputText value="#{param['paramName']}" />


数据类型

在JSF EL中有这些数据类型:


布尔型:true或者false 
字符串型:使用单引号'或者双引号"进行分隔。格式类似java的String,可以使用\进行分隔。比如\"代表一个双引号。 
浮点型:和Java一样 
整型:和Java一样 
空:null 

运算符

JSF EL中有这些运算符:


算术运算符: +-(二元)、 */div%mod-(一元) 
逻辑运算符: and&&or||not! 
关系运算符: ==eq!=ne<lt>gt<=ge>=le。可以与其他值、或布尔型、字符串型、整型或浮点型相比较。 
空运算符: empty 运算符是可以用来确定值是否为  null 或空的前缀运算。 
条件运算符: A ?B : C。计算  B 或  C,具体情况取决于  A 的计算结果。 

运算符有不同的优先级。按从高到低,从左到右的顺序排列的运算符优先级如下所示:


[] . 
()  (更改运算符的优先级) 
-(一元)  not ! empty 
* / div % mod 
+ -(二元) 
< > <= >= lt gt le ge 
== != eq ne 
&& and 
|| or 
? : 

下面列出了一些运算符使用的例子:

运算式结果
#{1}1
#{1 + 2}3
#{1.2 + 2.3}3.5
#{1.2E4 + 1.4}12001.4
#{-4 - 2}-6
#{21 * 2}42
#{3/4}0.75
#{3 div 4}0.75,除法
#{3/0}Infinity
#{10%4}2
#{10 mod 4}2,也是余除
#{(1==2) ? 3 : 4}4
#{true and false}false
#{true or false}true
#{not true}false
#{1 < 2}true
#{1 lt 2}true
#{1 > (4/2)}false
#{1 > (4/2)}false
#{4.0 >= 3}true
#{4.0 ge 3}true
#{4 <= 3}false
#{4 le 3}false
#{100.0 == 100}true
#{100.0 eq 100}true
#{(10*10) != 100}false
#{(10*10) ne 100}false

 


关键字

下面列出了JSF EL的关键字,你不能用这些关键字作为bean的名字或者属性:

andfalselenot
divgeltNull
emptygtmodor
eqinstanceofnetrue


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值