编程语言
首页 > 编程语言> > java-如何解释EL表达式中方括号([])运算符的用法

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的子类,而PersonBaseEntity的子类.BaseEntity具有方法isNew()(因此Owner也具有该方法).

这样,代码段${owner [‘new’]}等同于owner.isNew().

标签:jsp-tags,el,spring,java,spring-mvc
来源: https://codeday.me/bug/20191030/1970473.html