[Opensource] blocks, outputs, and attributes?

Mike Traum mtraum at cirnetwork.org
Wed Mar 12 17:24:55 PST 2003


Thanks - it's all coming together.
 
Using the pure struts is news to me - you can do this as long as you use
"controllerResponse" as the "name"? Is this new to cvs, or is 5.01 capable
of this? This also works with nesting?
 
I assume that other taglibs would also work then? One I've been dying to
give a whirl is struts-layout (http://struts.application-servers.com/
<http://struts.application-servers.com/> ) - it has tons of stuff for table
layout, striping, date widgets, etc....
 
mike

-----Original Message-----
From: Michael Rimov [mailto:rimovm at centercomp.com] 
Sent: Tuesday, March 11, 2003 5:30 PM
To: opensource at jcorporate.com
Subject: Re: [Opensource] blocks, outputs, and attributes?


At 09:14 PM 3/10/2003 -0600, you wrote:


Every time I think I understand the nested bean thing....
 
After a long battle, I found that to access the attribute in this structure:
- block
   - output
       - attribute (of the output)
 
I had to use this:
<bean:write property="/block/output. at attribute"/>
 


Hi Mike,
That . shouldn't have been necessary, you're absolutely right...  In fact,
since one job I was working on wasn't working last night, that's probably
the very issue :)  I'll see about getting that fixed.  



To get there, I used some trial and error, and eventually had to run through
a debugger. The "." was a surprise to me. Also, I would have thought
<bean:write name="/block/output" property="@attribute"/> would work.


Name is only for the name of the bean in the request scope or session scope,
it has no knowledge of nesting.  Property is where you do all the nesting.

It helped me to figure out what Mike N. did by looking at the pure struts
version.  The above is:

<struts-bean:write name="controllerResponse"
property="block(blockName).output(outputName).attribute(attributeName)/>

So when he wrote the 'extended tags'
name is automatically controllerResponse unless specified,
property was designed to save all the typing.



Anyone got a definitive how-to on ".", "@", and "/"? Sometimes I just go
crazy trying to figure out the right combo.


Ok, again, you've hit a bug in the example you gave... you were on the right
track :)

So, here's the gist:

Think XPath first.  Forward slashes equals nesting, @ signs equals
'Attributes' and periods equals properties.

. == bean method.  Mike didn't have access to Beanutils at the time, so he
only specified a few properties that you can get with this.  If Somebody
wanted to use PropertyUtils to expand this to any property, it would be
great.  The most common use of such thing is Transition.url  so if you pick
up a transition, having .url in the property will call getUrl();

@ = ControllerElement.getAttribute()  

/ = Nesting.  Now I'm with you, I think the way Mike implemented it was a
bit confusing and not exactly consistent.

I've found that due to the consistency issues, I've been using pure struts
tags in my programming and then use the expresso extensions where needed.
[The classic example is the expresso submit buttons which need to have a
special hidden field added to them].  The nice thing is since the one is an
extension of another, I can switch back and forth in the same code.  

For example.  The following code iterates through the transitions in a
controllerResponse and outputs a link, label, and everything, one transition
per line. (Thanks to Malcolm Wise for this tag... it's wonderful!)

<struts-logic:iterate id="eachTransition" name="controllerResponse"
property="transitions">
        <p><html:exLink name="eachTransition/></p>
</struts-logic:iterate>

[For my own coding, I've started using "struts-" prefixes for the real thing
and no prefix for the expresso extensions.  so  <struts-bean:write/> is the
pure struts write tag, and <bean:write/> is the Expresso version.

Anyway, as I said, I'm finding my jsp programming much more productive this
way.

The other way would be to use JSTL.  I've updated the EDG chapter in CVS on
JSP programming to show the use of pure struts and JSTL tags when dealing
with a ControllerResponse object, you might want to give it a gander to see
if it gives you any ideas. 

Speaking of which, since I'm up to my eyeballs right now, anybody with
commit access willing to format/edit what I just wrote and put it in EDG JSP
Chapter???  I'd really appreciate it!
                                                -Mike


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.jcorporate.com/pipermail/opensource/attachments/20030312/700431f1/attachment-0002.htm


More information about the Opensource mailing list