JSP不会抛出NullPointerException

时间:2015-03-05 12:21:20

标签: 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";
}

和jsp页面:

...
<title>${railwayService.name}</title>
<c:forEach var="company" items="${railwayService.companies}">
...

它工作正常,但我感到困惑,当railwayServiceRepository.findOne(id)返回null时NullPointerException不会抛出。

2 个答案:

答案 0 :(得分:6)

不确定StackOverflow wiki on Expression Language是否是值得信赖的参考(我一直试图在官方规格中找到它,但没有运气),但是:

  

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

     

${user.name}

     

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

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

(...)请注意,因此它不会打印&#34; null&#34;当值为null时也不会抛出NullPointerException,这与使用scriptlet时不同。 换句话说,EL是无效的。

答案 1 :(得分:-2)

model.addAttribute("railwayService",railwayServiceRepository.findOne(id));

每当value为null时,它都不会抛出NullPointerException,它只会将值作为null传递给视图。