当我读到Spring PetClinic示例应用程序,我发现他们总是将 add 和 modify 功能放入单个 JSP 文件中,并且他们使用 ${owner['new']}
用于自定义当前页面上的元素的表达式,例如用于标签的“新所有者”或“所有者”。
[]
还有其他用法吗? JSP (Spring) 环境中的运算符?
Controller 文件有以下片段:
@RequestMapping(value = "/owners/new", method = RequestMethod.GET)
public String initCreationForm(Map<String, Object> model) {
Owner owner = new Owner();
model.put("owner", owner);
return "owners/createOrUpdateOwnerForm";
}
@RequestMapping(value = "/owners/{ownerId}/edit", method = RequestMethod.GET)
public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) {
Owner owner = this.clinicService.findOwnerById(ownerId);
model.addAttribute(owner);
return "owners/createOrUpdateOwnerForm";
}
JSP 文件包含以下片段:
<h2>
<c:if test="${owner['new']}">New </c:if> Owner
</h2>
最佳答案
[]
将允许您:
获取属性,如果对象是一个 bean(有 getter 和 setter):
${car['type']}
这将等同于 car.getType();
(或 car.isType()
如果 type
字段是 boolean 值
).
如果对象是 Map
,则获取键的值:
${carMap['Volvo']}
当 carMap
是 Map
时,这将等同于 carMap.get('Volvo');
。
获取索引,如果对象是数组
或列表
:
${cars[1]}
这相当于 cars[1]
如果 cars
是一个 array
或相当于 cars.get(1)
如果 cars
是一个 List
。
更多详情/来源:http://docs.oracle.com/javaee/6/tutorial/doc/bnahu.html
编辑:
您的问题表达式 (${owner['new']}
) 属于第一种情况。在宠物诊所应用程序中,Owner
类是 Person
的子类这是 BaseEntity
的子类. BaseEntity
有一个方法 isNew()
(所以 Owner
也有那个方法)。
这样,片段 ${owner['new']}
等同于 owner.isNew()
。
关于java - 如何解释 EL 表达式中方括号 ([]) 运算符的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119875/