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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to