Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Проблема с <taglib>


Автор: drdoom 25.1.2009, 22:54
есть web.xml вот такой 
Код

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

  
    <servlet>

    <servlet-name>hello</servlet-name>

    <servlet-class>student.web.HelloWorldServlet</servlet-class>

  </servlet>

  

  <servlet-mapping>

    <servlet-name>hello</servlet-name>

    <url-pattern>/hello</url-pattern>

  </servlet-mapping>
    <taglib>

   <taglib-uri>

      http://www.someurl.ru

   </taglib-uri>

   <taglib-location>

      /WEB-INF/hello.tld

   </taglib-location>

</taglib>
</web-app>


так вот, ругается на такглиб идея, ну на все что есть с таглибом, говорит не знает че такое. не пойму в чем проблема

Добавлено через 1 минуту и 11 секунд
вроде все либы подключены

Автор: garbuz 26.1.2009, 00:22
drdoom, попробуйте вставить прямо на jsp-страничке
Код

 <% @ taglib uri=”xxx”  prefix=”xxx” %>

Автор: drdoom 26.1.2009, 00:29
собственно это там уже есть
я не понимаю почему в веб.хмл не видно таглиб из за этого и диплоится криво с эксепшеном

Автор: EJack 26.1.2009, 09:31
А у вас файл hello.tld точьно там лежит? и файлик class кот реализует работу точно на месте 

Автор: rygel 26.1.2009, 10:08
начиная с версии 2,4 сервлетной спеки тег "taglib" является подэлементом тега "jsp-config"

Код

<?xml version="1.0" encoding="UTF-8"?>    ]

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>student.web.HelloWorldServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <jsp-config>
        <taglib>
            <taglib-uri>
                http://www.someurl.ru
            </taglib-uri>
            <taglib-location>
                /WEB-INF/hello.tld
            </taglib-location>
        </taglib>
    </jsp-config>

</web-app>

Автор: drdoom 26.1.2009, 15:05
rygel, спасибо)

Добавлено через 5 минут и 55 секунд
rygel, еще ругается на    <jsp-version>1.2</jsp-version>  в файле hello.tld

Автор: rygel 26.1.2009, 15:56
покажи плиз свой tld.. или хотя бы его DOCTYPE

Автор: drdoom 26.1.2009, 16:04
Код

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



<taglib 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"

    version="2.0">

   <tlib-version>1.0</tlib-version>

   <jsp-version>1.2</jsp-version>

   <short-name>Sample Tag Library</short-name>

   <uri>/SimpleTagLibrary</uri>

   <description>

      Example of tag for HelloWorld

   </description>



   <tag>

      <name>hello</name>

      <tag-class>student.web.tag.HelloTag</tag-class>

      <body-content>empty</body-content>

      <description>

         Hello World Tag example

      </description>

      <attribute>

         <name>name</name>

         <required>false</required>

         <rtexprvalue>true</rtexprvalue>

      </attribute>

   </tag>

</taglib>

вот он собственной персоной

Автор: rygel 26.1.2009, 16:16
схема новой версии спецификации, а тег старой. если это тебе шаблоны генерит среда то используй те теги которые поддерживаются схемой, их описания можно и в схеме посмотреть. если необходимо использовать старую спецификацию вместо атрибутов тега taglib добавь dtd

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

Автор: drdoom 26.1.2009, 16:23
"http://www.w3.org/2001/XMLSchema-instance"
вот эта схема чтоли новая?
я отдел кадров просто пытаюсь запустить

Автор: rygel 26.1.2009, 17:15
вот схема: http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd

вместо 

Код

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


такой код

Код

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>


или удали  <jsp-version>1.2</jsp-version>

Автор: drdoom 26.1.2009, 19:05
я может тупой, но когда приложение сдеплоилось, выдало мне эксепшен,такого еще не видел написано 
org.apache.jasper.JasperException: /hello.jsp(23,32) Attribute value  request.getParameter("name")  is quoted with " which must be escaped when used within the value

Автор: rygel 26.1.2009, 20:37
показывай код

Автор: drdoom 26.1.2009, 21:14
вот жспеха 
Код

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/WEB-INF/hello.tld" prefix="jstlpg" %>
<%@ taglib prefix="jsplpg" uri="/SimpleTagLibrary" %>

<html>

   <head>

      <title>

         Hello World Sample

      </title>

   </head>



   <body>

      <h1>

         <jsplpg:hello name="<%= request.getParameter("name") %>" />

      </h1>

   </body>

</html>

вот сервлет который ее зовет 
Код

package student.web;

import java.io.IOException;



import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;





public class HelloWorldServlet extends HttpServlet

{

  public void doGet(HttpServletRequest req, HttpServletResponse resp)

      throws ServletException, IOException

  {

    
    getServletContext().getRequestDispatcher("/hello.jsp").forward(req, resp);

  }

}


вот собстно тег 
Код

package student.web.tag;

import java.io.IOException;



import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspTagException;

import javax.servlet.jsp.tagext.TagSupport;





public final class HelloTag extends TagSupport

{

   private String name = null;



   public int doStartTag() throws JspException

   {

      try {

         if(name == null) {

            pageContext.getOut().write("Hello, world!");

         }

         else {

            pageContext.getOut().write("Hello, world! I'm "+name);

         }

      }

      catch(IOException ioe) {

         throw new JspTagException(ioe.getMessage());

      }

      return SKIP_BODY;

   }



   public String getName()

   {

      return name;

   }



   public void setName(String name)

   {

      this.name = name;

   }



   public void release()

   {

      super.release();

      name = null;

   }

}





Автор: rygel 26.1.2009, 23:11
замени 
Код

 <jsplpg:hello name="<%= request.getParameter("name") %>" />


на 

Код

 <jsplpg:hello name='<%= request.getParameter("name") %>' />


https://issues.apache.org/bugzilla/show_bug.cgi?id=45015

Автор: drdoom 27.1.2009, 02:39
Теперь нпе выскакивает)
 Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 
org.apache.jasper.JasperException: java.lang.NullPointerException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    student.web.HelloWorldServlet.doGet(Unknown Source)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Добавлено через 5 минут и 50 секунд
причем вылетает даже когда пытаюсь посмотреть просто жспеху в том же проекте индекс.жсп

Автор: rygel 27.1.2009, 09:25
приаттачь свой war файл

Автор: drdoom 27.1.2009, 15:17
вот

Автор: rygel 27.1.2009, 15:37
не деплой со своим приложением те либы которые лежат в томкате, убери из web-inf/lib  servlet-api.jar и jsp-api.jar

Автор: Ingvarspb 4.3.2010, 12:18
Была та же проблема. В конце концов запустилось! Спасибо!

Автор: VipStarMan 8.3.2010, 20:52
Да мне этот вариант тоже помог решить эту проблему, до этого голову ломал что да как...?
а тут и всё ясно спс.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)