【问题标题】:Spring MVC 3 JSTL will not output values in Tomcat 5.5Spring MVC 3 JSTL 不会在 Tomcat 5.5 中输出值
【发布时间】:2011-04-17 20:38:23
【问题描述】:

我很难将模型值从我的控制器显示到我的 JSP 视图。在 Tomcat 6 中一切正常。但在 Tomcat 5.5 中不起作用。这是我的文件。

web.xml 用于 Tomcat 5.5(对于 Tomcat 6,我使用 version="2.5" 和正确的架构)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

版本:

Tomcat:5.5

标签库:jstl.jar、standard.jar(1.1版本)

控制器

@Controller
@RequestMapping("/inventory")
public class SimpleController {

        @Autowired
        @Qualifier("inventoryService")
        private IInventoryService inventoryService;

        // Our default method when a simple GET request is made to /simple
        @SuppressWarnings("unchecked")
        @RequestMapping(method = RequestMethod.GET)
        public String viewProducts(ModelMap model) {
            List<IInventory> retrieved = inventoryService.getInventories();
            List <InventoryDTO> inventories = new ArrayList();

            for (IInventory inventory: retrieved) {
                InventoryDTO inventoryDTO= new InventoryDTO();
                inventoryDTO.setId(inventory.getId());
                inventoryDTO.setBrandName(inventory.getBrand().getName());
                inventories.add(inventoryDTO);
            }

            model.put ( "inventories", inventories );

            // This will resolve to a logical view name /WEB-INF/jsp/inventoriesView.jsp
            return "inventoriesView";
        }

}

inventoriesView.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<html>
<head>
    <style type="text/css">
    <%@include file="../../resources/style.css" %>
    </style>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Inventories</title>
</head>
<body>
<h1>Inventory</h1>
<br/>
<%@include file="menu.jsp" %>
<br /><br />
<c:if test="${!empty inventories}" >
    <table class="table" border="1">
        <tr>
            <th>ID</th>
            <th>Brand</th>
        </tr>
        <c:forEach items="${inventories}" var="inventory">
        <tr>
            <td><c:out value="${inventory.id}" /></td>
            <td><c:out value="${inventory.brandName}" /></td>
        </tr>
        </c:forEach>
    </table>
</c:if>
<c:if test="${empty inventories}">
    There are currently no inventories.
</c:if>
</body>
</html>

请记住,这在 Tomcat 6.0 中可以完美运行,但在 Tomcat 5.5 中则不行。我没有收到任何错误。它只是不会像模型为空一样显示数据。当我调用 EL 表达式 {2+2} 时,我得到 4 作为 Tomcat 5.5 和 6 的值。谢谢

【问题讨论】:

    标签: spring jsp tomcat jstl


    【解决方案1】:

    您的 /WEB-INF/lib 中有一个 Tomcat 6 特定的 EL JAR 文件,这导致 - 其中 - EL empty 关键字在 Tomcat 5.5 中失败。确保您的 /WEB-INF/lib 没有特定于 servletcontainer 的库。我还会检查 Tomcat 5.5 日志以了解启动和 webapp 初始化期间的任何故障。这些本身不会在 webapp 错误页面中表示。

    【讨论】:

    • 感谢您的回复。我试过你的建议;但是我无法为 Tomcat 6 找到任何错误或任何特定的 servlet 库。我在 WEB-INF/lib 中看到的所有库都是我手动添加的 100% 库,所以我知道它们到底是什么。
    • 这是我做的一个有趣的解决方案。我为 Tomcat 5.5 (2.4) 创建了一个新的动态 Web 项目。复制了与我正在排除故障的页面相关的控制器、实体和视图。瞧!内容显示。我的控制器和 jsp 上的语法确实是正确的(在 Tomcat 5.5 和 Tomcat 6 中)。所以我猜我的原始项目有些可疑。我将尝试创建一个新的 Web 项目并将我的源代码和库复制粘贴到那里。
    • 好的,我已经进一步调查了。问题是为什么数据库是空的?我的项目设置为自动导入 sql 语句。它与 Tomcat 6 完美配合。所有单元测试都通过了。但是在 Tomcat 5.5 上,它无法导入 sql。事实证明,我原来的 TOmcat 5.5 项目导入文件不在类路径中,但它被埋在了一个文件夹下。所以我做了第二个 Tomcat 5.5 项目。这次 import.sql 在类路径中。
    • 但是数据库仍然是空的。事实证明,当我从 Eclipse 运行 Tomcat 5.5 时,它加载了旧项目和新项目。新项目正在从旧项目加载 import.sql(当然会失败,因为它在错误的路径上)。为了解决数据库问题,我要么更正了旧项目中 import.sql 的位置。或者我刚刚关闭了旧项目。我都试过了,它奏效了。我的 EL 表达式现在可以工作了。作为交换,我不得不旷工,因为我昨晚花了太多时间来解决这个问题。我要休息了:)
    • 另一件事。我必须清除浏览器的缓存才能看到结果,因为当我执行上述步骤时,我在数据库中看到了我的数据,但在我的 JSP 上却是空的。
    【解决方案2】:
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
        <scope>compile</scope>
    </dependency>
    

    【讨论】:

    猜你喜欢
    • 2013-04-07
    • 1970-01-01
    • 2016-05-30
    • 2016-04-09
    • 2014-05-05
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多