大可制作:QQ群:31564239(asp|jsp|php|mysql)

JSP/Servlet: [] 或 . 的选择

 

在EL中,您可以使用 . 运算符来取得JavaBean属性或Map对象中的值,例如若student是个JavaBean,其上有一个name属性,则您可以这么取得该属性的 值:
${ student.name }

而事实上,您也可以使用[]运算符来取得值,例如:
${ student["name"] }

在EL中,假设table是一个Map对象,则您可以使用 . 运算符并在之后接上键值来取得Map中对应的值,例如以title为键值来取得对应的值:
${ table.title }

而使用[]运算符也是可以的,例如:
${ table["title"] }

所以归纳来说,使用 . 运算符时,左边要是个JavaBean或Map对象,而右边必须是JavaBean的属性或是Map的键值。

而使用[]运算符时,除了左边要是个JavaBean或Map对象,而右边必须是JavaBean的属性或是Map的键值之外,还有更进一步的功能,左边 也可以是java.util.List对象或数组,而右边还可以是索引值。

举个例子来说,如果有个数组储存于request之中:
String[] names = {"Justin", "caterpillar", "momor", "Becky"};
request.setAttribute("nameList", names);

您可以在使用EL时,如下使用[]来取得数组中的值,例如取得索引1位置的值:
${ nameList[1] }

上例会显示"caterpillar"的字符串,更进一步的,EL还会将字符串索引值转换为int类型,例如:
${ nameList["2"] }

上例会显示"momor"的字符串结果。

总结来说,. 与 [] 运算符可以处理JavaBean及Map对象,而[]运算符给您更多的功能,可以处理java.util.List或数组,如果[]中使用""包括一个数 值,则EL会尝试将之转换为int再进行索引存取。