Java jsp el中点运算符和括号之间的差异

Java jsp el中点运算符和括号之间的差异,java,jsp,jstl,el,Java,Jsp,Jstl,El,我有一节课: public class MyClass{ String name; Map map; int [] arrInt; //get set } 我创建对象: MyClass mc = new MyClass (); 在jsp中,我可以编写这样的代码: ${mc.name} 它和 ${mc["name"]} 点运算符和括号运算符之间存在差异?它们的含义完全相同。点样式通常更容易阅读。如果索引将由表达式(例如mc[name]而不是mc[name])给出,则

我有一节课:

public class MyClass{
   String name;
   Map map;
   int [] arrInt;
//get  set
}
我创建对象:

MyClass  mc = new MyClass  ();
在jsp中,我可以编写这样的代码:

${mc.name}
它和

${mc["name"]}

点运算符和括号运算符之间存在差异?

它们的含义完全相同。点样式通常更容易阅读。如果索引将由表达式(例如mc[name]而不是mc[name])给出,则需要括号样式。它们的含义完全相同。点样式通常更容易阅读。如果索引将由一个表达式(例如mc[name]而不是mc[name])给出,则需要括号样式。

当您处理组时,您当前的场景是可以的,但是[]符号确实有帮助

JSTL表达式语言为访问对象及其属性提供了一种简单的机制。圆点。运算符用于遍历对象层次结构和访问属性。以下代码片段演示了点运算符用法的基本示例:

在本例中,点运算符用于访问customer对象的address属性,然后访问address对象的city属性。表达式中的点运算符的每个实例都计算为运算符左侧属性的getter方法调用。因此,第一个点将调用customer对象上的getAddress方法。然后,第二个点将对从getAddress调用返回的对象调用getCity方法。为了使点操作符工作,操作符右侧的对象必须对操作符左侧的属性具有getter方法。否则,操作员将失败。 如您所见,这种遍历对象层次结构的方法既快速又简单。如果没有JSTL,您必须使用类似于以下内容的JSP表达式来访问层次结构中的属性:

<%= customer.getAddress().getCity() %>
点运算符非常适合访问简单属性;但是,它不允许您访问数组或集合的元素。为此,JSTL具有方括号[]运算符。方括号操作符允许您指定要访问的元素的索引,如下所示:

<c:set var="highBid" value="${bids[0]}"/>
<c:set var="color" value="${param['color']}"/>
这种方法适用于数组和基于列表的集合。对于基于地图的集合,可以为要访问的元素指定键,如下所示:

<c:set var="highBid" value="${bids[0]}"/>
<c:set var="color" value="${param['color']}"/>

您当前的场景是可以的,但是当您处理组时,[]符号确实有帮助

JSTL表达式语言为访问对象及其属性提供了一种简单的机制。圆点。运算符用于遍历对象层次结构和访问属性。以下代码片段演示了点运算符用法的基本示例:

在本例中,点运算符用于访问customer对象的address属性,然后访问address对象的city属性。表达式中的点运算符的每个实例都计算为运算符左侧属性的getter方法调用。因此,第一个点将调用customer对象上的getAddress方法。然后,第二个点将对从getAddress调用返回的对象调用getCity方法。为了使点操作符工作,操作符右侧的对象必须对操作符左侧的属性具有getter方法。否则,操作员将失败。 如您所见,这种遍历对象层次结构的方法既快速又简单。如果没有JSTL,您必须使用类似于以下内容的JSP表达式来访问层次结构中的属性:

<%= customer.getAddress().getCity() %>
点运算符非常适合访问简单属性;但是,它不允许您访问数组或集合的元素。为此,JSTL具有方括号[]运算符。方括号操作符允许您指定要访问的元素的索引,如下所示:

<c:set var="highBid" value="${bids[0]}"/>
<c:set var="color" value="${param['color']}"/>
这种方法适用于数组和基于列表的集合。对于基于地图的集合,可以为要访问的元素指定键,如下所示:

<c:set var="highBid" value="${bids[0]}"/>
<c:set var="color" value="${param['color']}"/>
${person.age}看起来比${person[age]}简单,但第二条语句有一些优点

使用点运算符时,左侧的对象只能是地图 或者一个Bean,右边的东西必须遵循java编码 命名的标准。但是使用[],左边的东西可以 也可以是列表或数组。这意味着右边的东西可以是 不符合Java命名规则的编号或标识符

例: 1.你可以用

${mapObject[com.electron.name]}

但不是

二,。也可以通过使用[]使用嵌套表达式,如

数组[array2[array3[0]]

${person.age}看起来比${person[age]}简单,但第二个语句有一些优点

使用点运算符时,左侧的对象只能是地图 或者一个Bean,右边的东西必须遵循java编码 命名的标准。但是使用[],左边的东西可以 也可以是列表或数组。这意味着右边的东西可以是 号码还是身份证 不符合Java命名规则的entifier

例: 1.你可以用

${mapObject[com.electron.name]}

但不是

二,。也可以通过使用[]使用嵌套表达式,如


数组[array2[array3[0]]]

如果是一组对象,则为非真。请确定为真。如果键是表达式,则必须使用[]语法“组”在EL中不是一个定义良好的术语。在对象组中不是真的。肯定是真的。如果键是表达式,则必须使用[]语法“组”在EL中不是一个定义明确的术语。