Solved

Problem getting Java Tag working

Posted on 2002-04-04
1
198 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
ID: 6917740
Rather than

public void setPageKeyAttributes(String,String)

use

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

Hope this helps,

-S
0

Featured Post

ScreenConnect 6.0 Free Trial

Discover new time-saving features in one game-changing release, ScreenConnect 6.0, based on partner feedback. New features include a redesigned UI, app configurations and chat acknowledgement to improve customer engagement!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Protect jar file - windows app 2 53
Weekend adv creator 3 39
print map entry 34 69
table example 4 29
Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers learn about the “while” loop and how to utilize it correctly in Java. Additionally, viewers begin exploring how to include conditional statements within a while loop and avoid an endless loop. Define While Loop: Basic Example: Explanatio…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:

809 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