java - 如何解释 EL 表达式中方括号 ([]) 运算符的用法

标签 java spring spring-mvc el jsp-tags

当我读到Spring PetClinic示例应用程序,我发现他们总是将 addmodify 功能放入单个 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']}

carMapMap 时,这将等同于 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/

相关文章:

java - 在 Java 中使用 Thread.yield()

Java 通用返回类型问题

Spring JavaMailSenderImpl 自动检测服务器可用

java - 使用 javax 注解在 spring 中创建 session 作用域 bean

java - 将 Swagger 添加到 Spring MVC 项目(创建 bean 时出错)

java - 尝试理解 Java 中的时区

java - JCEKS keystore 不再加载 : com. sun.crypto.provider.SealedObjectForKeyProtector

java - 更新 spring webflow 中的对象未显示在 UI 上

ios - 请求spring mvc服务器资源在iOS上无法播放mp4,但在Nginx上可以直接访问mp4文件

spring - 在 Spring MVC 和 Hibernate 应用程序的 JSP 页面中实现分页