1:屏蔽空引用异常
在Java程序中,尝试调用 null对象的成员方法会抛出异常,但EL表达式却会返回null值 作为代替,在页面上不会抛出任何异常,而是输出一个空字符串。
2: 访问list,数组等对象
对于List类型对象,访问的对象通过List的get(int)方法获 取,其中“[]”内的整数作为该方法的参数。 当指定的下标超出范围时,表达式并不抛出异常,而是返回 null。
我通过做实验发现;
${对象1.对象2.对象3}
(1)在计算过程中,如果对象1是null,则对象2 无论是不是对象1 的属性,都是返回null,不会报任何异常。
(2)如果对象1不是null, 则对象2 必须是对象1的属性。。否则报异常
public class Person {
private int id;
private String name;
private Address add;
private List<String> list;
private String sevenRefund;
。。。。
private int id;
private String name;
private Address add;
private List<String> list;
private String sevenRefund;
。。。。
getter and setter ()...
test.jsp
<%
Person wo=new Person();
List<String> tt=new ArrayList<String>();
tt.add("abc000");
wo.setList(tt);
wo.setName("abc");
request.setAttribute("wo",wo);
%>
${wo.list[0]} ----------->输出abc000
${wo.list[4].uyxededxadd1} -----> wo.list[4] is null
${wo.b0bk} -----> 错误 。。。
--------8888888888${w1.sevenR22efund}822888888<br> -->w1 is null
--------8888888888${wo.sevenRefund}8888888
${wo.bbk}
Person wo=new Person();
List<String> tt=new ArrayList<String>();
tt.add("abc000");
wo.setList(tt);
wo.setName("abc");
request.setAttribute("wo",wo);
%>
${wo.list[0]} ----------->输出abc000
${wo.list[4].uyxededxadd1} -----> wo.list[4] is null
${wo.b0bk} -----> 错误 。。。
Property 'b0bk' not found on type com.test.Person 因为wo 不是null
--------8888888888${w1.sevenR22efund}822888888<br> -->w1 is null
--------8888888888${wo.sevenRefund}8888888
${wo.bbk}