根据标签文件中的TLD或属性指令,属性项不接受任何表达式

2022-09-01 14:51:13

我有一个项目,我需要在HTML页面中显示电影的详细信息。我必须严格遵循MVC,尽管我没有使用任何像Spring或Struts这样的框架。我也不允许使用脚本,但使用JSTL和表达式语言。我通常从数据库中检索数据,然后将其设置为bean,然后列出这些bean并将其传递给JSP,然后打印这些详细信息。但是,如果我不被允许使用JSP,我将如何实现它。如果我使用 servlet 检索这些数据并将其设置为 Bean,然后将其设置为列表并通过请求调度程序传递,那么如何从 HTML 页面的列表中获取每个 Bean?

我无法让这个JSTL工作。我正在使用Netbeans 7.0和Apache Tomcat 7。

 <%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>DVD Guru</title>
        <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    </head>
    <body>   
     <div id="wrapper">     
        <c:set var="testing" value="blah"/>
                <c:out value="${testing}"/>
        </div>      
    </body>
</html>

我收到以下错误

根据标签文件中的TLD或属性指令,属性项不接受任何表达式

我已经从项目属性中导入了JSTL 1.1库。还应该做些什么吗?


答案 1

必须使用 JSPJSTL - 只是一组自定义标记,不能单独使用。以及表达式语言。如果您没有使用任何MVC框架,那么您需要自己完成一些工作。请看一下(如果你还没有)以下设计模式:

  1. Front Controller,便于简单应用Command
  2. Front Controller,适用于更复杂的应用View Helper

UPD

要解决 EL 问题,请尝试将 JSP 中的 JSTL uri 更正为:

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

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

您的 JSTL taglib URI 是错误的。你拥有的那个是用于遗留JSTL 1.0的。从 JSTL 1.1 开始,taglib URI 中有一个额外的路径,因为表达式语言(那些东西)已经从 JSTL 移动到 JSP,因此 JSTL 1.0 和 1.1 的 taglib 是不可互换的。/jsp${}

相应地修复它:

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

假设 Netbeans 足够智能,可以自动生成与 Tomcat 7 兼容的 Servlet 3.0,则无需再做任何事情。web.xml

另请参阅:


推荐