Jsp EL和<;c:out>;为null属性打印空字符串,但从servlet调度请求时引发异常
我的调度程序servlet是:Jsp EL和<;c:out>;为null属性打印空字符串,但从servlet调度请求时引发异常,jsp,jstl,el,Jsp,Jstl,El,我的调度程序servlet是: SampleModel model = new SampleModel(); model.setModelName("someName"); request.setAttribute("model", model); request.getRequestDispatcher("nulltester.jsp").forward(request, response); 这里SampleModel类只有一个名为modelName的属性。转发请求的JSP代码段:
SampleModel model = new SampleModel();
model.setModelName("someName");
request.setAttribute("model", model);
request.getRequestDispatcher("nulltester.jsp").forward(request, response);
这里SampleModel
类只有一个名为modelName
的属性。转发请求的JSP代码段:
The undefined bar property is : ${model.bar} , <c:out value="${model.bar}">
未定义的bar属性是:${model.bar},
如果我们点击servlet,然后servlet将请求分派给jsp,则此代码会引发异常。但是,如果我们直接点击JSP,那么我们将毫无例外地得到o/p!有人能解释一下为什么会发生这种情况吗?如果根本没有模型属性,EL将对
${model}
求值为null,并停止对${model.bar}
求值,返回空字符串
如果存在模型,它将对对象求值${model}
,并尝试通过调用model.getBar()
来求值${model.bar}
,但找不到任何此类getter,这将导致异常