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

nts*_*tha 24 java jstl

我有一个项目,我需要在HTML页面中显示电影的详细信息.我必须严格遵循MVC,虽然我没有使用任何框架,如Spring或Struts.我也不允许使用scriptlet,但使用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>
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

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

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

uda*_*mik 55

您必须使用JSP,JSTL - 只是一组自定义标记,不能单独使用.以及表达语言.如果您没有使用任何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'%>
Run Code Online (Sandbox Code Playgroud)


Bal*_*usC 22

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
Run Code Online (Sandbox Code Playgroud)

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

相应修复:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Run Code Online (Sandbox Code Playgroud)

假设Netbeans足够聪明,可以自动生成与web.xmlTomcat 7 兼容的Servlet 3.0,那么就不需要做任何事了.

也可以看看:


小智 8

将您的JSTL taglib uri更改为以下内容:

<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力.