Java EE: InstantiationException, вызванный пользовательским тегом в JSP

Я делаю свои первые шаги в создании веб-приложений с помощью Java EE на веб-сервере Tomcat. У меня есть JSP с некоторыми пользовательскими тегами. В моем JSP есть один пользовательский тег, который вызывает исключение InstantiationException при визуализации JSP, в то время как многие другие пользовательские теги работают отлично. Я уже закомментировал все тело тега, так что это выглядит так:

    <%@ taglib prefix="t" uri="http://localhost:8080/MyProject/zubtld"%>
      (...)
        <t:ShowAndHideCheckbox showlabel="Filter vocabs by type" parameter="vocabTypeForFilter"/>

Также я прокомментировал содержание метода doStartTag() в классе Tah Handler (это был единственный метод, который я реализовал). Класс теперь выглядит так:

package tags;

import java.io.IOException;

import javax.servlet.http.HttpSession;
import javax.servlet.jsp.tagext.TagSupport;

public abstract class ShowAndHideCheckbox extends TagSupport {

    private String showlabel;
    private String parameter;

    public String getShowlabel() {
        return showlabel;
    }
    public void setShowlabel(String showlabel) {
        this.showlabel = showlabel;
    }
    public String getParameter() {
        return parameter;
    }
    public void setParameter(String parameter) {
        this.parameter = parameter;
    }

    protected void print(String s) {
        try {
            pageContext.getOut().print(s);
        } catch (IOException e) {
            System.out.println("Konnte leider nicht schreiben!");
            e.printStackTrace();
        }
    }

    @Override
    public int doStartTag() {

        /*HttpSession session = pageContext.getSession();

        print("<fieldset>");
        // Content not visible
        if(session.getAttribute(parameter) == null){
            print("<label><input type=\"checkbox\" name=\"" + parameter + "_show\" value=\"" + parameter + "\"/>" + showlabel + "</label>");
            print("</fieldset>");
            return SKIP_BODY;
        }

        // Content visible
        else {
            print("<label><input type=\"checkbox\" name=\"" + parameter + "_hide\" value=\"" + parameter + "\" cheked/>" + showlabel + "</label>");
            print("</fieldset>");
            return EVAL_BODY_INCLUDE;
        } */
        return EVAL_BODY_INCLUDE;
    }
}

И моя запись в файле TLD для этого тега выглядит следующим образом:

<tag>
        <name>ShowAndHideCheckbox</name>
        <tag-class>tags.ShowAndHideCheckbox</tag-class>
        <body-content>scriptless</body-content>
        <attribute>
            <name>showlabel</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>parameter</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

... И все же исключение приходит:(Вот трассировка стека:

Okt 04, 2017 11:33:31 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [de.servlets.Start] in context with path [/Zubrilnik] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspException: null] with root cause
java.lang.InstantiationException
    at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.apache.jasper.runtime.TagHandlerPool.get(TagHandlerPool.java:115)
    at org.apache.jsp.LanguageMainPage_jsp._jspx_meth_t_005fShowAndHideCheckbox_005f0(LanguageMainPage_jsp.java:1846)
    at org.apache.jsp.LanguageMainPage_jsp._jspx_meth_c_005fif_005f10(LanguageMainPage_jsp.java:1698)

Таким образом, все другие пользовательские теги работают отлично, хотя они часто намного сложнее, чем этот... Я совершенно сбит с толку и не знаю, в чем причина:(

Было бы здорово, если бы вы могли мне помочь!

Привет, Даниэль

0 ответов

Другие вопросы по тегам