【问题标题】:Difference between jsp expression tags <% and <%=jsp表达式标签<%和<%=的区别
【发布时间】:2013-04-23 12:05:14
【问题描述】:

我或多或少知道 的表达式中引入一些逻辑来避免空值错误。除非我将标签替换为 ,否则我会收到错误消息。然而,在我的构建之后,我得到一个 jsp 错误而不是 servlet 错误。我不能真正将我的原始代码粘贴到此处,但 中的代码本质上是检索作为 Struts 1 项目中的 servlet 参数传递的嵌套数组对象(更像是另一个数组对象中的数组对象)。我只想添加一个 try...catch 语句,以防对象的属性尚未实例化。

<%=((package.package.package.ClassName)session.getAttribute("attrName")).getObjectList()[0].getSecondObject.length%>; 

这是 jsp 问题,还是 Struts 1 问题?再说一遍,这两个标签有什么区别?

【问题讨论】:

    标签: jsp jsp-tags struts-1


    【解决方案1】:

    &lt;%...%&gt; 之间,您可以使用 Java 编写任何您想要的逻辑。

    使用&lt;%=...%&gt; 会将括号之间的表达式的结果输出到屏幕上。所以不要写例子

    <% System.out.println("Hello World") %> 
    

    你可以简单地写

    <%= "Hello world" %> 
    

    基本上, 所做的是调用正在计算的表达式的toString() 方法。

    如果你需要添加你所说的空检查逻辑,你可以使用

     <%..%>
    

    以下是您可以参考的链接:

    https://web.archive.org/web/20200711234346/http://www.easywayserver.com/jsp/JSP-example.htm

    https://www.tutorialspoint.com/jsp/jsp_syntax.htm

    【讨论】:

    • 哦,好的。是的,我一直在努力。我想我修复了代码。我不得不在文档顶部添加另一个为我进行验证的脚本: 然后替换我原来的 的代码。我仍然不太清楚区别,但你的回答是有道理的。谢谢。
    • 我想你的意思是
    • @KorayTugay 我真的不明白 相对于 的优势
    • @AnkushGatfane - 我不认为他是说打印更好。我认为他是说标签的行为类似于“print”,而不是“println”。
    【解决方案2】:

    ------> 这个标签我们在JSP 中称为scriptlet 标签。实际上,无论您在 .jsp 文件中做什么,它都会在内部转换回 Servlet,因为在服务器中,只有在内部运行的是 Servlet,您可以在 Servlet 内部的 out.println() 中编写所有 Html 代码,但作为开发人员,我们很容易将后端和前端分开,这就是我们需要JSP文件的主要原因。因此,如果您需要在 Servlets 中做一些与 service() 方法相关的事情,请在 这个标签内进行。如果您只需要获取某些内容的输出,请使用 ----> 表达式标记。如果您需要查看 JSP 文件如何在内部转换回 servlet,请使用 netbeans IDE(它有一个单独的工具可以查看它。)。

    • 在 servlet 的 service() 方法中编写代码 == [编码 在scriptlet标签内]

    • 在服务方法外但在 Servlet 内编写代码 class== [在表达式标签内编码]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 2013-11-19
      • 2021-03-07
      • 1970-01-01
      • 2014-09-03
      • 2016-07-22
      • 1970-01-01
      相关资源
      最近更新 更多