EL和<c:out>为空属性打印空字符串,但在从servlet调度请求时抛出异常</c:out>

时间:2013-03-16 07:15:13

标签: 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片段:

The undefined bar property is : ${model.bar} , <c:out value="${model.bar}">

如果我们点击servlet和servlet然后将请求调度到jsp,则此代码抛出异常。但是如果我们直接点击JSP那么我们就会得到o / p而没有任何异常!谁能解释我为什么会这样呢?

1 个答案:

答案 0 :(得分:2)

如果根本没有模型属性,EL会将${model}评估为null,并在那里停止对${model.bar}的评估,返回一个空字符串。

如果有模型,它会评估${model}您的对象,并尝试通过调用${model.bar}来评估model.getBar(),但不会找到任何此类获取器,这将导致例外。