2012-01-16 20 views
1

Tomcat 7の最新バージョン(つまり、2011年1月16日現在7.0.23)をダウンロードしました。私はジャカルタのタグライブラリコンポーネントのどれもがjspで働いていないことを知りました。失敗のポイントはすべてのJSPで同じで一貫しています。それはタグライブラリでTomcat 7.0.23が動作しない

org.apache.taglibs.input.Select _jspx_th_input_005fselect_005f0 = (org.apache.taglibs.input.Select)_jsp_instancemanager.newInstance("org.apache.taglibs.input.Select", this.getClass().getClassLoader()); 

でもカスタムタグを書いて、それが動作しているかどうかを確認するためにも、私はそのjspでも同じ問題がありました。

com.ah.util.customtags.SelectTag _jspx_th_hirezon_005fform_005fselect_005f0 = (com.ah.util.customtags.SelectTag)_jsp_instancemanager.newInstance("com.ah.util.customtags.SelectTag", this.getClass().getClassLoader()); 

JSPコードが

<%@ page extends="com.ah.servlets.BaseJSPServlet"%> 
<%@ taglib uri="/WEB-INF/hirezon_form.tld" prefix="hirezon_form" %> 
<html> 
<body>Test tags 
<% 
System.setProperty("org.apache.jasper.Constants.USE_INSTANCE_MANAGER_FOR_TAGS", "true"); 
%> 
<hirezon_form:select count="100"/> 
</body> 
</html> 

あるCustomTagSupportクラスのコードが

package com.ah.util.customtags; 

import java.io.IOException; 
import javax.servlet.jsp.JspException; 
import javax.servlet.jsp.tagext.TagSupport; 

public class SelectTag extends TagSupport { 

    String count; 
    public String getCount() { 
     return count; 
    } 
    public void setCount(String count) { 
     this.count = count; 
    } 
    public int doStartTag() throws JspException { 
     // This means the JSP must evaluate the contents of any CHild tags 
     // in this tag; 
     return EVAL_BODY_INCLUDE; 
    } 
    // This method is called when the JSP encounters the end of te tag 
    // implemented by this class 
    public int doEndTag() throws JspException { 

     String sum = "200000"; 
     try { 
      pageContext.getOut().write("The Sum of first " + count + " numbers is " + sum); 
     } catch (IOException e) { 
      throw new JspException("Fatal Error: HelloTag could'nt write to the JSP out"); 
     } 
     // This return type tells the JSP page to continue processing 
     // the rest of the page 
     return EVAL_PAGE; 
    } 
} 

でのTomcat 7.0.23における既知のバグがありますか?私は多くの研究を行い、USE_INSTANCE_MANAGER_FOR_TAGSプロパティをtrueに設定しようとしましたが、同じエラーが発生しています。任意の提案は、ありがとう、ありがとう

答えて

3

私は問題を理解した、それは私のJSPだった。 jspはBaseJSPServletというサーブレットを拡張しています。デフォルトでは、jsp用のJavaクラスが作成されると、org.apache.jasper.runtime.HttpJspBaseが拡張されますが、ページ拡張ディレクティブを追加すると、Javaクラスはorg.apache.jasperではなく、指定したクラスを拡張します。ランタイム.HttpJspBase。だから、あなたの親クラスがHttpJspBaseクラスが何をしているかを確認する必要があります。

ここでは、page extendsディレクティブを使用してjspで拡張できる親クラスのサンプルコードを示します。

import java.io.IOException; 
import javax.servlet.ServletConfig; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.jsp.HttpJspPage; 
import org.apache.jasper.compiler.Localizer; 

public abstract class BaseJSPServlet2 implements javax.servlet.jsp.HttpJspPage 

{ 
    private static final long serialVersionUID = 1L; 

    public final void init(ServletConfig config) 
    throws ServletException 
    { 
    super.init(config); 
    jspInit(); 
    _jspInit(); 
    } 

    public String getServletInfo() 
    { 
    return Localizer.getMessage("jsp.engine.info"); 
    } 

    public final void destroy() 
    { 
    jspDestroy(); 
    _jspDestroy(); 
    } 

    public final void service(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException 
    { 
    _jspService(request, response); 
    } 

    public void jspInit() 
    { 
    } 

    public void _jspInit() 
    { 
    } 

    public void jspDestroy() 
    { 
    } 

    protected void _jspDestroy() 
    { 
    } 

    public abstract void _jspService(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse) 
    throws ServletException, IOException; 

} 
関連する問題