JSP不会抛出NullPointerException

Tka*_*gen 7 java spring jsp nullpointerexception

我有控制器:

@RequestMapping(method = RequestMethod.GET)
public String getViewRailwayService(@RequestParam long id, Model model) {
    model.addAttribute("railwayService",railwayServiceRepository.findOne(id));
    return "admin/railwayService/view";
}
Run Code Online (Sandbox Code Playgroud)

和jsp页面:

...
<title>${railwayService.name}</title>
<c:forEach var="company" items="${railwayService.companies}">
...
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我很困惑,当railwayServiceRepository.findOne(id)返回nullNullPointerException不抛出.

kry*_*ger 7

不确定表达式语言上StackOverflow wiki是否值得信赖(我一直试图在官方规范中找到它,但还没有运气),但是:

在访问属性时,EL依赖于JavaBeans规范.在JSP中,使用以下表达式:

${user.name}

与"raw"scriptlet代码中的以下内容基本相同(下面的示例是为了简单,实际上反射API用于获取方法并调用它们):

<%
  User user = (User) pageContext.findAttribute("user");
  if (user != null) {
    String name = user.getName();
    if (name != null) {
      out.print(name);
    }
  }
%>
Run Code Online (Sandbox Code Playgroud)

(...)请注意,当值为null时,它不会打印"null",也不会抛出NullPointerException与使用scriptlet时不同的值.换句话说,EL是无效的.