Solved

Problem getting Java Tag working

Posted on 2002-04-04
1
192 Views
Last Modified: 2010-03-31
Hi,
  I have updated a java tag class and it's associated tld file. My tag worked fine before, but now does not.
Here is my code


package com.projectTest.text.tags;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
import java.util.*;
import com.projectTest.text.*;
import com.projectTest.page.*;
import com.projectTest.*;
import com.projectTest.exceptions.*;


public class DynamicPagesTag extends TagSupport{

  private JspWriter jspWriter = null;
  private int pageKey = 0;
  private int pageTypeKey = 0;
  private String htmlString = null;

  /*
  * Setting of tag attribute
  */
  public void setPageKeyAttributes(String newPageKey, String newPageTypeKey) throws JspException {
 
    try {
      pageKey = Integer.parseInt(newPageKey);
    } catch (NumberFormatException nfe) {
      throw new JspException("Please set the pageKey as a positive integer value greater than or equal to one");
    }
    try {
      pageTypeKey = Integer.parseInt(newPageTypeKey);
    } catch (NumberFormatException nfe) {
      throw new JspException("Please set the pageTypeKey as a positive integer value greater than or equal to one");
    }  


  }


  public int doStartTag() throws JspTagException, JspException {

    getPageContentHTML();

    return EVAL_BODY_INCLUDE;
  }

  private void getPageContentHTML() throws JspException{
    TextFileReader tfr = new TextFileReader();
   
    if (pageTypeKey == Page.TypeA) {
      tfr.setFilePath(Page.TypeA + pageKey + ".txt");
    }else{
      tfr.setFilePath(Page.TypeB + pageKey + ".txt");
    }
   
    htmlString = tfr.getText();
  }

  public int doEndTag() throws JspTagException {
    try {
      pageContext.getOut().write(htmlString);

    }
    catch(IOException io) {
      throw new JspTagException("Could not write to JSP");
    }

    return EVAL_PAGE;
  }


}

My TEI Class as follows


package com.projectTest.text.tags;

import javax.servlet.jsp.tagext.*;

public class DynamicPagesTagTEI extends TagExtraInfo{
  public VariableInfo[] getVariableInfo(TagData data){
    return new VariableInfo[] {
        new VariableInfo("htmlString", "java.lang.String", true, VariableInfo.NESTED)
        };
  }
}


My custom tld file

<?xml version="1.0"?>
<taglib>
  <tlibversion>1.0</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>myTestTag</shortname>
  <info>My Tag Library</info>

<tag>
    <name>dynamicPages</name>
    <tagclass>com.projectTest.text.tags.DynamicPagesTag</tagclass>
    <bodycontent>JSP</bodycontent>
    <info>Simple example</info>
    <attribute>
      <name>pageKey</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>pageTypeKey</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
</tag>

</taglib>


When I include the tag on a jsp page as follows:

<%@ taglib uri="/WEB-INF/customTags.tld" prefix="rbsa" %>

I get an error as follows

Root Cause --------------- : allaire.jrun.jsp.NoSuchAttributeException: The tag handler 'com.projectTest.text.tags.DynamicPagesTag' does not have a setter for the attribute 'pageKey' specified in the tld.


The only difference between this and my previous DynamicPagesTag was that there was no attribute called pageTypeKey. This iwas something I then added in. Since then the error is occuring. Do you see where I am going wrong?



0
Comment
Question by:seoirse
1 Comment
 
LVL 3

Accepted Solution

by:
saxaboo earned 200 total points
Comment Utility
Rather than

public void setPageKeyAttributes(String,String)

use

public void setPageKey(String){...}
and
public void setPageTypeKey(String){...}

Hope this helps,

-S
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

For customizing the look of your lightweight component and making it look opaque like it was made of plastic.  This tip assumes your component to be of rectangular shape and completely opaque.   (CODE)
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now