首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

el表达式拾掇

2012-11-23 
el表达式整理1)el表达式分为 值表达式和方法表达式,方法表达式只可以执行方法本身,值表达式可以获取表达式

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>

?

热点排行