Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / October 2006

Tip: Looking for answers? Try searching our database.

Custom Tags in JSP and the ID attribute

Thread view: 
Mize-ze - 29 Oct 2006 19:48 GMT
Hello,

I want to add a custom tag to my application so it will be more
mainatable.
Let's say I have some tree like structure that can be used like that in
a scriptlet:

AndOrTree t = new AndOrTree();
       t.addCondition("1","eq","cpu-time","5");
       t.addCondition("2","eq","size","8");
       t.addAccumulator("3","1","2",AndOrTree.ACCUMULATOR.AND);
       t.addCondition("4","eq","fullscans","0");
       t.addAccumulator("5","3","4",AndOrTree.ACCUMULATOR.OR);
       out.print(t.toString());

The addCondition and addAccumulator functions take as a first argument
an "id"
this id uniquelly identifies the node in the tree.

The addAccumulator takes two "ids" of nodes, which will be the new
Node's sons.

So basically when I create a new "Accumulator" with
t.addAccumulator("5","3","4",AndOrTree.ACCUMULATOR.OR); I create a new
Node with identifier 5 that is a parent of nodes 3 and 4.

Now, I want to keep the same functionallity under customer Tags.
In my vision, it should look something like that:

<aot:condition id="1" operator="<" property="size" value="8" >
<aot:condition id="2" operator="<" property="cpu-time" value="85" >
<aot:accumulator id="3" name1="1" name2="2" ...>

Since there is a Tree out there, I guess I should also implement a tag
that initializes the tree
The tree should also be transferred to other tags for reference, so it
should be something like that:

<aot:tree id="myTree">
<aot:condition tree="myTree" id="1" operator="<" property="size"
value="8" >
<aot:condition tree="myTree" id="2" operator="<" property="cpu-time"
value="85" >
<aot:accumulator tree="myTree" id="3" name1="1" name2="2" ...>

I "extended" TagSupport and did the previous bit of
tree.addCondition(this.id,this.operator,this.property,this.value)
inside the doStartTag () function.
My problem is with the TreeTag, How can I implement and extended
TagSupport that will have a reference to a AndOrTree that I can later
set as a member of the other Tag classes?

My tag handlers looks like that:
public class ConditionTag extends javax.servlet.jsp.tagext.TagSupport{

    //For the  TLD calls;
   private String property;
   private String operator;
   private String value;
   private AndOrTree tree;

   /** Creates a new instance of ConditionTag */
   public ConditionTag() {
   }
      public void setOperator(String operator) {
       this.operator = operator;
   }

   public String getOperator() {
       return operator;
   }

   public String getValue() {
       return value;
   }

   public String getProperty() {
       return property;
   }

   public void setValue(String value) {
       this.value = value;
   }

   public void setProperty(String property) {
       this.property = property;
   }

   public AndOrTree getTree() {
       return tree;
   }

   public void setTree(AndOrTree tree) {
       this.tree = tree;
   }

   public int doStartTag ()
   {

tree.addCondition(this.id,this.operator,this.property,this.value);

       return SKIP_BODY;
   }

  public int doEndTag()
   {
       return EVAL_PAGE;
   }

 
}

How should I implement the TreeTag class?
Thanks.
steen - 30 Oct 2006 09:04 GMT
Well,
you could do a little something like this :

public class TreeTag extends javax.servlet.jsp.tagext.TagSupport {
 private AndOrTree tree = new AndOrTree();

 public AndOrTree getAndOrTree() {
   return tree;
 }
}

and then in your sub-tags, you can do this whenever you need the tree :
 ((TreeTag) getParent()).getAndOrTree()

but this requires that your condition and accumulator tags always are
inside a treetag.
<aot:tree>
 <aot:condition .... />
 <aot:accumulator ... />
</aot:tree>

/Steen

> Hello,
>
[quoted text clipped - 110 lines]
> How should I implement the TreeTag class?
> Thanks.
Mize-ze - 30 Oct 2006 12:37 GMT
I've  tried something else, my JSP file looks something like that now:

<aot:tree id="tree" />
<aot:condition id="1" tree="tree" operator="eq" property="cpu-time"
value="5"/>

I assume that the id attribute in aot:tree relates to the TagSupport
object, Which I called treeTag.
The condition tag then gets the reference to the TreeTag which holds
the Tree object itself.
However I could not get it to work.
Any Ideas?

TreeTag:: public int doStartTag ()
   {
       this.treeObject = new AndOrTree();
       return SKIP_BODY;
   }

ConditionTag:: public void setTree(Tags.TreeTag tree) {
       this.tree = tree;
       this.treeObj = tree.getTreeObject();
}

Then the ConditionTag::doStartTag uses the treeObj!
Makes sense?

> Well,
> you could do a little something like this :
[quoted text clipped - 132 lines]
> > How should I implement the TreeTag class?
> > Thanks.
Mize-ze - 30 Oct 2006 15:04 GMT
I guess that my problem is that the tree attribute in condition tag is
treated by me as a TreeTag object in the setTree method:

public void setTree(Tags.TreeTag tree) {
        this.tree = tree;
        this.treeObj = tree.getTreeObject();
        }

While from the JSP point of view I am transferring a string.
Is that my problem? how can I send a treeTag or better yet a real
AndOrTree?

Thanks.

> I've  tried something else, my JSP file looks something like that now:
>
[quoted text clipped - 159 lines]
> > > How should I implement the TreeTag class?
> > > Thanks.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.