关于访问对象中的键的 JSP 问题?

问题描述 投票:0回答:1

假设你有这样的东西:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<table>
     <c:forEach items="${products}" var="product">
         <tr>
             <td>${product.name}</td>
             <td>${product.description}</td>
          </tr>
      </c:forEach>
</table>

如何查看此

name
对象还有哪些其他键(例如键:
description
"product"
)?我主要是一名 JavaScript 工程师,所以 JSP 对我来说仍然很陌生。

举例来说,我想要将

price
放入新的
<td>
中,但是
product.price
不起作用,而且我无法找出访问其真实名称的正确键。

尝试在网上寻找答案,但没有看到。

java jsp jstl
1个回答
0
投票

类似这样的东西是使用 JSTL 标记的 JSP 代码片段。 JSTL 在其标签中大量使用 EL 表达式。这是代码中的

<c:forEach>
标签。即使定义了整个 JSP 页面,您也可能不知道其中使用的属性。如果您尝试在浏览器中访问此类页面,则会失败并显示空内容或返回 404 错误代码。如果您的 JSP 页面位于
WEB-INF
文件夹下,则确定最后一种情况。

什么原因仍然无法访问视图目录中的JSP页面?

事实是

WEB-INF
是服务器上的受保护目录;从外部访问文件是不可能的。应用程序可以将其文件存储在此目录中,以确保用户无法访问它们。这主要适用于配置文件和其他内部文件。一些 MVC 框架中的 JSP 文件开始放置在那里,以限制绕过控制器对视图的直接访问。同样的事情也适用于使用调度程序实现 MVC 模式的 servlet。由于这些JSP如果没有在控制器上初始化就无法运行,直接访问这些页面会抛出异常。

初始化由控制器执行的 JSP 页面,其中准备好所有属性并将其放入 JSP 范围中。一旦“准备好”显示,控制器就会使用调度程序将其请求转发到 JSP 页面。所有属性都转移到新请求中,并且可以通过 JSTL 标记中的 EL 表达式找到。因此,您应该查看控制器代码以查找它作为属性传递给 JSP 的对象。通常控制器不关心对象结构,因为它将它们保存为 Object。 EL 表达式使用内省机制来研究对象并找出其属性。

    

© www.soinside.com 2019 - 2024. All rights reserved.