Evan,
Is your setter method for url getting called with a null value? If so, then
your instance variable "url" will reference null instead of an empty string.
If you change you setter to
public void setUrl( String url ) {
if(url != null)
this.url = url;
else
this.url = "";
}
it should fix the problem. I haven't tried this solution however.
Sharath
Hello all,
I have encountered another possible bug - 0.8.0.
I have created a TagSupport object and an associated TagExtraInfo object. I
have two attributes for the tag - "id" and "url". In the taglib descriptor file
taglib.tld, attribute "id" is set as required, "url" is not required.
In the .jsp file the following works fine:
<test:testtag id="xyz" url="abc" />
However, if I do not specify the optional attribute "url":
<test:testtag id="xyz" />
the following exception is thrown:
=================================
500 Internal Server Error
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java, Compiled Code)
at cs.ka(JAX, Compiled Code)
at cs.i1(JAX, Compiled Code)
at com.evermind.server.http.JSPPage.i1(JAX)
at com.evermind.server.http.HttpApplication.ll(JAX)
at com.evermind.server.http.HttpApplication.l7(JAX)
at com.evermind.server.http.JSPServlet.service(JAX)
at cm.i_(JAX)
at cm.forward(JAX)
at cw.ky(JAX, Compiled Code)
at c.run(JAX, Compiled Code)
=================================
No reference to the "url" attribute is made in my TagExtraInfo object.
Once again, if I am doing something wrong, please advise.
Thanks for any help!
Evan Vaala
Here is my code:
=================TestTag.java=====================
package taglib;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import javax.servlet.ServletRequest;
public class TestTag extends TagSupport
{
private String id="";
private String url="";
public TestTag() {
super();
}
public void setId( String id ) {
this.id = id;
}
public void setUrl( String url ) {
this.url = url;
}
public int doStartTag() throws JspError {
String st = this.url;
pageContext.setAttribute( id, st );
return SKIP_BODY;
}
}
=================TestTagExtraInfo.java=========================
package taglib;
import javax.servlet.jsp.tagext.*;
public class TestTagExtraInfo extends TagExtraInfo
{
public TestTagExtraInfo()
{
super();
}
public VariableInfo[] getVariableInfo(TagData data)
{
return new VariableInfo[]
{
new VariableInfo(data.getAttributeString("id"),
"java.lang.String",
true,
VariableInfo.AT_END),
};
}
} // TurboBufferTagExtraInfo
===============taglib.tld - testtag section===========
<tag>
<name>testtag</name>
<tagclass>taglib.TestTag</tagclass>
<teiclass>taglib.TestTagExtraInfo</teiclass>
<bodycontent>none</bodycontent>
<info>A demo loop tag</info>
<attribute>
<name>id</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>url</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>