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)
Таким образом, все другие пользовательские теги работают отлично, хотя они часто намного сложнее, чем этот... Я совершенно сбит с толку и не знаю, в чем причина:(
Было бы здорово, если бы вы могли мне помочь!
Привет, Даниэль