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

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

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

      DVD Guru    

我得到以下错误

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

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

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

  1. Front ControllerCommand用于简单应用
  2. Front ControllerView Helper适用于更复杂的应用

UPD

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

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

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

相应修复:

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

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

也可以看看:

  • 我们的JSTL维基页面
  • 我们的EL维基页面

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

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

它就像一个魅力。

您甚至可以通过连接字符串来生成HTML。 或者您可以使用任何文本模板引擎,如简单的JMTE(Java最小模板引擎)或更高级的Velocity或StringTemplate。 使用另一个模板引擎,您可以勇敢地声明您不使用JSP。 虽然我没有看到JSP和其他模板引擎之间有太大区别,但我的意思是你的要求有点愚蠢。

更好的是:不要使用JSP使用JSF 2! )

尝试使用前缀<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>而不是<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

我在尝试在randInt XML中使用变量时遇到了这个问题,我想在使用randInt

通过使用pageContext解决了它

 <% Random rand = new Random(); int randInt = rand.nextInt(); pageContext.setAttribute("randInt", randInt); %>