Problemi con i tag personalizzati JSP
Domanda
Ricevo il seguente errore quando provo ad eseguire una pagina jsp con un tag jsp personalizzato.
javax.servlet.ServletException: /pages/editBidForm.jsp(43,3) Nessun tag " getName " definito nella libreria di tag importata con prefisso "personalizzato" org.apache.struts2.dispatcher.Dispatcher.serviceAction (Dispatcher.java:515) org.apache.struts2.dispatcher.FilterDispatcher.doFilter (FilterDispatcher.java:419) .... ...
Ecco il mio codice (parte) nella pagina jsp.
<%@ taglib uri="/WEB-INF/taglib.tld" prefix="custom" %>
<tr>
<custom:getName name="Narayana Hari"/>
</tr>
E il file taglib.tld
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag
Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>custom</shortname>
<tag>
<name>hello</name>
<tagclass>com.poran.action.CustomizedTag</tagclass>
<bodycontent>empty</bodycontent>
<info>Tag having no body</info>
<attribute>
<name>name</name>
<required>true</required>
<rtexpvalue>true</rtexpvalue>
</attribute>
E la classe java
package com.poran.action;
import java.io.*;
import javax.servlet.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.util.*;
public class CustomizedTag implements Tag {
private PageContext pageContext;
private Tag parent;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/* public CustomizedTag() {
super();
}
*/
public int doStartTag() throws JspException {
/* try {
pageContext.getOut().print(getName());
} catch (IOException ioe) {
throw new JspException("Error:"+ioe.getMessage());
}*/
return SKIP_BODY;
}
public int doEndTag() throws JspException {
return SKIP_PAGE;
}
public void release() {
}
public Tag getParent() {
// TODO Auto-generated method stub
return null;
}
public void setPageContext(PageContext arg0) {
// TODO Auto-generated method stub
}
public void setParent(Tag arg0) {
// TODO Auto-generated method stub
}
/* public void setPageContext(PageContext pageContext) {
this.pageContext = pageContext;
}
public void setParent(Tag parent) {
this.parent = parent;
}
public Tag getParent() {
return parent;
}*/
}
Per favore, suggeriscimi dove correggere.
Grazie, Aditya R
Soluzione
L'unico tag che hai definito nel tuo taglib (guardando il tuo codice) è " ciao " ;. Che ne dici di provare a cambiarlo in <name>getName</name>