You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Jon Pearson <Jo...@sixnet.com> on 2009/04/30 22:57:43 UTC
OGNL in HTML tags
I'm trying to colorize table rows in a JSP based on the result of a
function call into the Action. Here's what I want to do:
<tr class="%{getStatus(deviceID)}">
...
</tr>
And have the function "String getStatus(long deviceID) { ... }" look up
the status of a device and return a CSS class name (such as 'normal',
'warning', or 'error').
But OGNL doesn't execute in non-Struts2 tags... Is there a
straightforward way to do this? At the moment, I'm thinking I need to
implement my own tag library that will add a Struts2-like "tr" tag.
Thanks!
~Jonathan
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
RE: OGNL in HTML tags
Posted by Jon Pearson <Jo...@sixnet.com>.
> > Dave Newton wrote:
> > > <tr class="<s:property value="%{getStatus(deviceID)}"/>">
> >
> > Minor addendum:
> >
> > IMO when iterating over a collection of model objects a
> status lookup
> > like this would be a matter of querying the device, rather than
> > providing a lookup based on the device ID.
> >
> > If device statuses need to be mapped to CSS classnames I'd pass the
> > device itself to a utility translation method rather than
> forcing the
> > translator to look up the device.
> >
> > This moves the generation of view-level data out of the
> device model,
> > eliminates the need to look up a device that already exists as a
> > model, and provides a measure of type safety (Java's OOP,
> after all).
> >
> > The utility class could be used as shown, or in a JSP-based custom
> > tag, which can significantly clean up the view layer
> depending on your
> > requirements and/or implementation.
> >
> > Dave
>
> I would like to do that, but if I have a Device object on the
> top of the value stack (or perhaps somewhere near the top),
> how would I grab that and pass it to the function? I just
> tried this and it didn't work:
>
> <tr class="<s:property value="%{getStatus([0])}" />">
>
> (after modifying the function to take a Device instead of an
> ID number).
Nevermind, I figured it out:
<s:iterator value="devices" var="dev">
<tr class="<s:property value="%{getStatus(#dev)}" />">
...
</tr>
</s:iterator>
Thanks for your suggestion!
~Jonathan
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
RE: OGNL in HTML tags
Posted by Jon Pearson <Jo...@sixnet.com>.
> Dave Newton wrote:
> > <tr class="<s:property value="%{getStatus(deviceID)}"/>">
>
> Minor addendum:
>
> IMO when iterating over a collection of model objects a
> status lookup like this would be a matter of querying the
> device, rather than providing a lookup based on the device ID.
>
> If device statuses need to be mapped to CSS classnames I'd
> pass the device itself to a utility translation method rather
> than forcing the translator to look up the device.
>
> This moves the generation of view-level data out of the
> device model, eliminates the need to look up a device that
> already exists as a model, and provides a measure of type
> safety (Java's OOP, after all).
>
> The utility class could be used as shown, or in a JSP-based
> custom tag, which can significantly clean up the view layer
> depending on your requirements and/or implementation.
>
> Dave
I would like to do that, but if I have a Device object on the top of the
value stack (or perhaps somewhere near the top), how would I grab that
and pass it to the function? I just tried this and it didn't work:
<tr class="<s:property value="%{getStatus([0])}" />">
(after modifying the function to take a Device instead of an ID number).
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: OGNL in HTML tags
Posted by Dave Newton <ne...@yahoo.com>.
Dave Newton wrote:
> <tr class="<s:property value="%{getStatus(deviceID)}"/>">
Minor addendum:
IMO when iterating over a collection of model objects a status lookup
like this would be a matter of querying the device, rather than
providing a lookup based on the device ID.
If device statuses need to be mapped to CSS classnames I'd pass the
device itself to a utility translation method rather than forcing the
translator to look up the device.
This moves the generation of view-level data out of the device model,
eliminates the need to look up a device that already exists as a model,
and provides a measure of type safety (Java's OOP, after all).
The utility class could be used as shown, or in a JSP-based custom tag,
which can significantly clean up the view layer depending on your
requirements and/or implementation.
Dave
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
RE: OGNL in HTML tags
Posted by Jon Pearson <Jo...@sixnet.com>.
> > I'm trying to colorize table rows in a JSP based on the result of a
> > function call into the Action. Here's what I want to do:
> >
> > <tr class="%{getStatus(deviceID)}">
> > ...
> > </tr>
> >
> > And have the function "String getStatus(long deviceID) {
> ... }" look
> > up the status of a device and return a CSS class name (such as
> > 'normal', 'warning', or 'error').
> >
> > But OGNL doesn't execute in non-Struts2 tags... Is there a
> > straightforward way to do this? At the moment, I'm thinking
> I need to
> > implement my own tag library that will add a Struts2-like "tr" tag.
>
> <tr class="<s:property value="%{getStatus(deviceID)}"/>">
>
> Dave
Thanks, that worked.
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: OGNL in HTML tags
Posted by Dave Newton <ne...@yahoo.com>.
Jon Pearson wrote:
> I'm trying to colorize table rows in a JSP based on the result of a
> function call into the Action. Here's what I want to do:
>
> <tr class="%{getStatus(deviceID)}">
> ...
> </tr>
>
> And have the function "String getStatus(long deviceID) { ... }" look up
> the status of a device and return a CSS class name (such as 'normal',
> 'warning', or 'error').
>
> But OGNL doesn't execute in non-Struts2 tags... Is there a
> straightforward way to do this? At the moment, I'm thinking I need to
> implement my own tag library that will add a Struts2-like "tr" tag.
<tr class="<s:property value="%{getStatus(deviceID)}"/>">
Dave
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org