Redirects - Dynamic Parameters 2007-11-06 - By Gary Affonso
Back I knew I had done this before, I just found the code.
Your redirect needs to look something like...
<result name="success" type="redirect"> <param name="location"> myAction.action${foo ? '?foo=' + foo : ''} </param> </result>
Note that I'm pretty sure your OGNL lookups are not going to get url-escaped.
The above assumes that "foo" is a property of the Action and available to OGNL (a getter). If foo lives somewhere else (like in the session, for instance) then you'll need to do a little more work to write the proper ognl reference.
Anyway, hope that helps. I think the above is (mostly) right this time. :-)
- Gary
Gary Affonso wrote: > I think you already know this, but in case you don't... When you > specify the action to redirect to, you have access to the OGNL stack. > > So your redirect may look something like this.. > > <result name="success"type="redirect"> > myAction.action?param=${paramValue} > </result> > > I think what you're asking is, if "param" has no value, you don't want > to see *anything* in the url. Neither the key nor the value of the > key/value pair. Right? > > So it should be just a matter of coming up with an OGNL expression that > tests for null before inserting either part of the key/value pair. > > Something like: > > myAction.action?${paramValue ? '' : 'param=' + paramValue} > > Note, that's *totally* off-the-cuff. I know OGNL does have the ternary > operator ( condition ? e2 : e3) but the string quoting, null checks, > ${}, string concatenation, etc. is probably all be wrong in that line > above. :-) > > The point is that I think all you need to do is be a little more > sophisticated about the OGNL string. You just gotta go learn a bit more > about OGNL. > > The OGNL language reference (at least the one I know about) is here: > > http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/index.html > > - Gary > > Gunnar Hillert wrote: >> Hi, >> >> A typical requirement in my webapps is to "redirect" to result pages >> after >> form submission. >> This is quite nicely described here: >> http://www.vitarara.org/cms/struts_2_cookbook/post_and_redirect >> >> This works great but here is my question: >> >> Is there a way to dynamically create parameters? For instance, I have use >> cases where I don't have to provide all parameters in my redirects at all >> times. Thus, if the value of variable foo is null in my action I don't >> want >> to use the variable in my redirect. I hate to see >> .../myaction.action?foo=&bar=1 in my urls. >> >> Is there anything in Struts that would allow this? E.g. some additional >> attribute on the param element would be nice ${foo} >> >> Or do I have to create my own "custom" result-type? >> >> Thanks! >> >> Gunnar Hillert > > > -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------ > To unsubscribe, e-mail: user-unsubscribe@(protected) > For additional commands, e-mail: user-help@(protected) > >
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------ To unsubscribe, e-mail: user-unsubscribe@(protected) For additional commands, e-mail: user-help@(protected)
|
|