当前位置: 首页 > 知识库问答 >
问题:

JSP中出错(/index1.JSP(第[16]行)根据标记文件中的TLD或属性指令,属性[items]不接受任何表达式)

屠晟睿
2023-03-14

有人能帮忙解决以下问题吗。

我试图理解在jsp文件中的c:foreach元素中使用变量标记,所以我使用了下面的示例代码,但不知怎么的,这对我来说并不适用。

我已经把index1.jsp在WebContent文件夹中,并在Java资源/src/com/java2s文件夹中xport.java空标签;dis.tld在WebContent/WEB-INF/tld文件夹中。运行时,我得到错误:

SEVERE: Servlet.service() for servlet [jsp] in context with path [/jstl4] threw exception [/index1.jsp (line: [16], column: [6]) According to TLD or attribute directive in tag file, attribute [items] does not accept any expressions] with root cause
org.apache.jasper.JasperException: /index1.jsp (line: [16], column: [6]) According to TLD or attribute directive in tag file, attribute [items] does not accept any expressions

index1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
// start comcat and load the following jsp page in browser
<%@ taglib uri="http://www.sample.com/dist" prefix="java2s" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

<html>
  <head>
    <title>A custom tag: scripting variable</title>
  </head>
  <body>
    output:

    <java2s:defineObjects howMany="5" name="numbers" />
    <ul>
      <c:forEach items="${numbers}" var="currentNumber">
        <li>
          <c:out value="${currentNumber}" />
        </li>
      </c:forEach>
    </ul>
  </body>
</html>

清空带有属性导出的标签。Java语言

package com.java2s;


import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class EmptyTagWithAttrsExport extends TagSupport {
    /**
     * 
     */
    private static final long serialVersionUID = -5986013033799724428L;
    // Code to implement the "howMany" attribute
      private int howMany;
      public int getHowMany()
      {
        return howMany;
      }
      public void setHowMany(int i)
      {
        howMany = i;
      }

      // Code to implement the "name" attribute
      private String exportedArrayName;
      public String getName()
      {
        return exportedArrayName;
      }
      public void setName(String s)
      {
        exportedArrayName = s;
      }
      
      public int doStartTag() throws JspException
      {
        int[] outputArray = new int[howMany];
        System.out.println("Generating " + howMany + " numbers");

        for ( int i=0; i<howMany; i++ )
        {
          outputArray[i] = (int) (Math.random() * 10);
        } // end of for ()
        
        
        pageContext.setAttribute(exportedArrayName, outputArray);

        return SKIP_BODY;
      }

      /*  public int doEndTag() throws JspException
      {
        return super.doEndTag();
      }*/
}

数字化信息系统。tld

<?xml version="1.0" encoding="ISO-8859-1" ?>

<taglib version="2.0"
        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-jsptaglibrary_2_0.xsd">

    <tlib-version>1.2</tlib-version>
    <short-name>dist</short-name>
    <uri>http://www.sample.com/dist</uri>

  <!-- this tag lists random numbers; the HTML is hard-coded within
       the tag handler
    -->
 
  <!-- this tag exports random numbers in a named array -->
  <tag>
    <name>defineObjects</name>
    <tag-class>com.java2s.EmptyTagWithAttrsExport</tag-class>
    <body-content>empty</body-content>
    
    <variable>
      <name-from-attribute>name</name-from-attribute>
      <variable-class>int []</variable-class>
      <declare>true</declare>
      <scope>AT_END</scope>
      
    </variable>

    
    <attribute>
      <name>howMany</name>
    </attribute>
    <attribute>
      <name>name</name>
    </attribute>
  </tag>

</taglib>
    

共有1个答案

常波
2023-03-14

jstl核心库路径是错误的,在使用下面的方法后,它运行良好

 类似资料:
  • 我有以下索引页面: 还有家。jsp: 我收到了这个错误 根据标记文件中的TLD或属性指令,属性动词不接受任何表达式 有人能帮忙吗?

  • 我一直在谷歌上搜索答案,但它不起作用。 我收到这个错误: org.apache.jasper.JasperException: /WEB-INF/pages/calendarEntry.jsp(行:5,列:46)根据标记文件中的TLD或属性指令,属性var不接受任何表达式 这是我的jsp文件 错误发生在最后一行。fmt公司 Web应用声明 Maven从属关系 部署环境-Tomcat 8

  • 问题内容: 我有一个项目,需要在HTML页面中显示电影的详细信息。尽管我没有使用像Spring或Struts这样的框架,但我必须严格遵循MVC。我也不允许使用scriptlet,但要使用JSTL和表达语言。我通常从数据库中检索数据,然后将其设置为Bean,然后列出这些Bean并将其传递给JSP,然后打印这些详细信息。但是,如果不允许我使用JSP,我将如何实现它。如果我使用servlet检索那些数据

  • 我用JSP编写了以下代码。 它显示错误:根据标记文件中的TLD或属性指令,属性名称不接受任何表达式 我应该怎么写,请给我一些建议。

  • 问题内容: 在我的应用程序上下文中,我定义了属性文件: 我想获取JSP页面上该文件中定义的属性的值。有没有办法做到这一点 问题答案: 只能解析Spring配置中的占位符(XML或注释)。在Spring应用程序中使用bean 是非常普遍的。您可以通过这种方式从视图中访问它(假设您正在使用): 然后,在您的JSP中,您可以使用或。

  • 我在tomcat中部署了一个阔叶应用程序,但在运行页面时,根据TLD,我得到的属性类对于标记形式无效。不过,当我在jetty中部署应用程序时,它运行良好。此外,当我部署应用程序时,我会收到以下警告:- 信息:TLD已跳过。URI:http://www.springframework.org/tags/form已定义信息:TLD已跳过。URI:http://www.springframework.o