el表达式整理

1)el表达式分为 值表达式和方法表达式,方法表达式只可以执行方法本身,值表达式可以获取表达式的值,也可以给表达式设置值。

一个表达式字符串可以由值表达式和方法表达式混合组成,下面示例的report.getReportParameters().get(0)部分是方法表达式,后面的.value是值表达式,只要表达式的最后部分是值表达式,就可以给整个表达式赋值,如下的inputText中的表达式能接收用户的输入。

<h:inputText value="#{report.getReportParameters().get(0).value}" />

下面的inputText只能显示,不能获取用户输入,输入后提交抛异常。

<h:inputText value="#{report.getReportParameters().get(0)}" />

 

2)el访问 list和map

#{bean.list[index].value}//index是数字

#{bean.map['key'].value}//对map中key对应的对象(复杂对象)的value属性进行操作,如果map中没有key对应的对象,set操作时抛出异常

#{bean.map['key']}//对map中key对应的简单对象进行操作。提交值时,如果map中key对应的对象没有就会将key设置进map中。下面示例,页面显示时cycleValueMap中可能没有一个key,也可能只有几个key,但提交时map中会有全部的key

 

 private Map<String, Boolean> cycleValueMap;

 

ValueExpression ve = getValueExpression("value");

ve.setValue(context.getELContext(), getLocalValue());//map的赋值是将<key,getLocalValue()> put进去

 

使用list来接收值就不太方便,list需要提前构造好全部值,否则set时会抛出下面的异常。数组越界

 value="#{calendarParam.list[3]}": java.lang.IndexOutOfBoundsException: Index: 3, Size: 3

ValueExpression ve = getValueExpression("value");

ve.setValue(context.getELContext(), getLocalValue());//list 可能会调用public void add(int index, E element)

或 public E set(int index, E element)方法,这个方法会抛出数组越界异常。

周一<h:selectBooleanCheckbox
       value="#{calendarParam.cycleValueMap['1']}"></h:selectBooleanCheckbox>

周二<h:selectBooleanCheckbox
       value="#{calendarParam.cycleValueMap['2']}"></h:selectBooleanCheckbox>

周三<h:selectBooleanCheckbox
       value="#{calendarParam.cycleValueMap['3']}"></h:selectBooleanCheckbox>

...

周日<h:selectBooleanCheckbox
       value="#{calendarParam.cycleValueMap['7']}"></h:selectBooleanCheckbox>

 

list方式需要提前构造好list中的值,否则会抛出数组越界异常

<h:selectBooleanCheckbox
       value="#{calendarParam.list[2]}"></h:selectBooleanCheckbox>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值