java-如何解释EL表达式中方括号([])运算符的用法
作者:互联网
当我阅读Spring PetClinic示例应用程序时,我发现他们总是将添加和修改功能放在单个JSP文件中,并且他们使用${owner [‘new’]}表达式自定义当前页面上的元素,例如“ New Owner”或标签的“所有者”.
在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(); (如果type字段为布尔值,则为car.isType()).
如果对象是Map,则获取键的值:
${carMap['Volvo']}
这等同于carMap.get(‘Volvo’);当carMap是地图时.
如果对象是数组或列表,则获取索引:
${cars[1]}
如果cars是数组,则等效于cars [1];如果cars是List,则等效于cars.get(1).
更多详细信息/来源:http://docs.oracle.com/javaee/6/tutorial/doc/bnahu.html
编辑:
您问题的表达式(${owner [‘new’]})属于第一种情况.在petclinick应用程序中,Owner
类是Person
的子类,而Person
是BaseEntity
的子类.BaseEntity具有方法isNew()(因此Owner也具有该方法).
这样,代码段${owner [‘new’]}等同于owner.isNew().
标签:jsp-tags,el,spring,java,spring-mvc 来源: https://codeday.me/bug/20191030/1970473.html