我有一个JSP页面,它调用一个函数并检查它的返回值。如果返回值不为null,则JSP页面继续使用它。如果返回值为空,我希望JSP页面的处理停止(这是因为该函数将在返回null对象之前执行重定向。此外,JSP代码的其余部分显然使用此对象,并且将获得如果函数返回null,则返回null指针异常。
所以我的问题是,停止加载JSP页面的正确方法是什么?我可以这样做:
if (Func() == null) { return; }
或者在JSP中间使用返回而不是更简洁的方法来解决这个问题?
由于
答案 0 :(得分:6)
无论如何尽早终止JSP的处理,我建议在处理显示之前在servlet中处理流控制,并根据函数调用的结果切换到适当的JSP。
我倾向于纯粹使用JSP来显示bean(或多个)的内容,并且所有逻辑都包含在调用servlet中。通过这样做,您可以更清晰地分离组件之间的关注点,以及更易于理解和调试的系统。
答案 1 :(得分:3)
自2.0以来,有一种标准方式:
throw new javax.servlet.jsp.SkipPageException();
答案 2 :(得分:2)
Brian的回答是一个很好的建议,但它没有清楚地回答这个问题。
答案是肯定的。大量的JSP被转换为一个方法_jspService,它在JSP被“执行”时运行,并且因为它是一个常规函数,它在finally块中进行清理,所以返回是安全的。
答案 3 :(得分:1)
如果你真的想要这样做我会建议如下
..some jsp.. <% if (iWantToKeepProcessing) { %> ..someother stuff.. <% } %>
我不得不同意Brian的意见,并说如果可能的话你应该避免进入JSP。如果您正在处理直接针对动态JSP文件而不是控制器/ servlet的post / get,则可能无法使用此功能。
答案 4 :(得分:0)
您可以使用 JSTL标记:
<c:if test="condition"> bodytext </c:if>
在加载页面/进程的控制上,哪一项优于<% if(condition) { %> bodytext <% } %>
。