我有这样的课程:
public class MyClass{
String name;
Map map;
int [] arrInt;
//get set
}
我创建了对象:
MyClass mc = new MyClass ();
在jsp中我可以编写代码:
${mc.name}
与
相同${mc["name"]}
点运算符和括号运算符之间是否存在差异?
答案 0 :(得分:4)
它们具有完全相同的含义。点样式通常更容易阅读。如果索引将由表达式给出(例如mc[name]
而不是mc["name"]
),则需要括号样式。
答案 1 :(得分:2)
${person.age}
看起来比${person["age"]}
简单,但第二个声明有一些 优势 。
使用点运算符时,左侧的东西只能是Map 或者Bean,右边的东西必须遵循java编码 标准(比如命名)。但与[] ,左边的东西可以 也是
List or an Array
。这意味着thing on the right
可以是一个 数字或不符合Java命名规则的标识符。
<强>离强>: 1。您可以使用
${ mapObject["com.electron.name"] }
但不
${ mapObject.com.electron.name }
2。您也可以使用[ ]
使用嵌套表达式,例如
array[array2[array3[0]]]
答案 2 :(得分:0)
您当前的情况还可以,但是当您处理群组时,[ ]
表示法确实有帮助。
Accessing Objects
JSTL表达式语言提供了一种访问对象及其属性的简单机制。点(。)运算符用于遍历对象层次结构和访问属性。以下代码段说明了点运算符用法的基本示例:
<c:out value="${customer.address.city}"/>
在此示例中,点运算符用于访问客户对象的地址属性,然后访问地址对象的城市属性。表达式中点运算符的每个实例都计算为运算符左侧属性的getter方法调用。因此,第一个点将在客户对象上调用getAddress()方法。然后,第二个点将对getAddress()调用返回的对象调用getCity()方法。为了使点运算符起作用,运算符右侧的对象必须具有运算符左侧属性的getter方法。否则,操作员将失败。 如您所见,这种遍历对象层次结构的方法快速而简单。如果没有JSTL,您必须使用类似于以下内容的JSP表达式来访问层次结构中的属性:
<%= customer.getAddress().getCity() %>
点运算符非常适合访问简单属性;但是,它不允许您访问数组或集合的元素。 为此,JSTL有括号([])运算符。括号运算符允许您指定要访问的元素的索引,如下所示:
<c:set var="highBid" value="${bids[0]}"/>
此方法适用于数组和基于列表的集合。对于基于地图的集合,您可以指定要访问的元素的键,如下所示:
<c:set var="color" value="${param['color']}"/>