GeeCON Prague 2014*
The moose likes JSP and the fly likes How to dynamically evaluate a tag within a java file Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » JSP
Bookmark "How to dynamically evaluate a tag within a java file " Watch "How to dynamically evaluate a tag within a java file " New topic
Author

How to dynamically evaluate a tag within a java file

Lu Jin
Greenhorn

Joined: Feb 22, 2003
Posts: 17
If I call a taglib from a JSP with the usual syntax <prefix:tag1>, and I want this tag outputs something like the following <prefix:tag2> or <prefix:tag3>, depends on the attribute value of tag1. But the problem is, the <prefix:tag2> will end up written to the browser.

So my question is, how to dynamically evaluate a tag within a java file?
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61309
    
  66

You cannot write actions (custom tags, JSTL tags, or JSP tags) to the output stream when the JSP is executing. The tags are evaluated at the time that the JSP is translated to a servlet, long before your tag handlers are called.

Factor the processing code from your tags into classes that can be called as part of tag handling. That way, you can call the processing instructions of tag2 and tag3 from the handler code of tag1.
[ May 21, 2005: Message edited by: Bear Bibeault ]

[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
Guruprakash Sathyanarayanan
Greenhorn

Joined: May 22, 2005
Posts: 1
Hi,
Try setting <rtexprvalue> to true for the attribute, which will allow you to take runtime values.

Regards,
Guru
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61309
    
  66

The <rtexprvalue> setting has no bearing on this question.
Lu Jin
Greenhorn

Joined: Feb 22, 2003
Posts: 17
I want to develop a "propertyTable" tag, its input is the object's class name. Based on the attibutes of the class, this tag will display a table and let user to key in the attribute value for the object. That means, in the jsp file, if we write:
<prefix: propertyTable objectSchemaId="customer"/>
then the following table will be displayed:

________________________________________________________
| Customer Name(String): | Input box (text and number) |
| Is Member(Boolean): | Check box (true or false) |
| Total Amount(Double): | Input box (number only) |
________________________________________________________

In the doStartTag() method of PropertyTableTag, I will retrieve all the attributes of object "customer" based on the objectSchemaId. And based on the data type of those attributes, I will dynamically display the different types of input box to the user. For example, if the totalAmount is "Double", then a number only text box will be displayed in the table, and if the isMember attribute is "Boolean", then a check box will be displayed.

In the doStartTag() method of PropertyTableTag, I wrote:

if(attributeSpec.getDataType().equalsIgnoreCase("Doube"))
{
htmlCode.append("<prefix:myInput name='xxx' dataType='Double'/>");
}

But instead of displaying <input type="text"...>,
<prefix:myInput name='xxx' dataType='Double'/> will be directly displayed to the client.

So,my question is, in a java file (not jsp), how to dynamically evaluate the "myInput" tag and get its plain html code? "myInput" tag can also be a nested tag.
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61309
    
  66

Did you read my first response?
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: How to dynamically evaluate a tag within a java file