表达式语言在 JSP 页面中不起作用。我们只是使用 JSP 表达式标记,但是当表达式结果为空时它会抛出异常。例如: <%= h.getHtml() %> 。相反,我们可以使用 ${h.html}
1 回答
您编写的 ToolTwist 小部件中生成的 JSP 代码是普通的标准 JSP 代码。虽然可以使用 Java Beans、EL、标记库和 JSP 的各种其他特性,但大多数项目发现坚持使用最基本的 JSP 表达式可以简化未来的可维护性,因为代码的含义是最清楚的。
大多数标记旨在剥离 JSP 代码并使其更像 HTML,但代价是使用特殊语义或将逻辑移至别处。当 JSP 将由不熟悉应用程序逻辑的 Web 设计人员维护时,这种分离很有用,但在 ToolTwist 的情况下,目标或多或少是多余的,因为页面是使用设计器更改的,而不是通过编辑 JSP 代码.
大多数小部件只编写一次,然后很少更改,因此重要的考虑因素是使代码一目了然,无需考虑或研究任何特殊的语义或标签库定义。使用最简单的 JSP 语法使调试和测试变得更容易,并且会受到任何将来需要查看代码的程序员的赞赏。
请注意,在这种情况下,最简单的意思是“最容易理解”而不是“最少的代码行”。
关于您的异常,请记住 <%= 和 %> 中的代码是标准 Java 代码。如果 Java 代码抛出异常,那么 JSP 代码就会抛出异常。在这种情况下,getHtml() 是您编写的方法,因此如果您希望将其用作字符串,您可能应该确保它不返回 null。或者,在使用它之前检查它的值:
<%
String html = h.getHtml();
if (html == null) {
html = "";
}
%><%=html%>
请注意,一个常见的坏习惯是调用该方法两次。最好不要这样做:
<%= (h.getHtml() == null) ? "" : h.getHtml() %>
总的来说,我建议您将 getHtml() 方法更改为在当前返回 null 的位置返回 ""。