If all you want to do is pass a parameter, then why don't you make it
available in your action and then juts pass it to the result using
OGNL? See this:

http://struts.apache.org/2.x/docs/parameters-in-configuration-results.html

Overall it is not a good idea to use internal Struts classes, as they
can change, and they often do.

musachy


On Thu, Feb 5, 2009 at 4:28 AM, Adam Hardy
<ahardy.str...@cyberspaceroad.com> wrote:
> Hi Musachy,
>
> I'm adding it in my action.
>
> That's why it gets overwritten - because when Action's method returns,
> struts calls for the Result, presumably re-creating it even though it's
> there.
>
> I don't understand why because there appears to be the code to provide an
> existing Result rather than recreating it, I just haven't delved as far into
> the underbelly of the struts mechanism calling the
> ActionInvocation#getResult().
>
>
>
> Musachy Barroso on 04/02/09 19:07, wrote:
>>
>> Lets take one step back, are you adding this param in an interceptor
>> or in your action?
>>
>> musachy
>>
>> On Wed, Feb 4, 2009 at 1:49 PM, Adam Hardy
>> <ahardy.str...@cyberspaceroad.com> wrote:
>>>
>>> Now that 2.1.6 won't let me add to the resultConfig to add my redirect
>>> httpParameters myself, I figured I'd have to obtain the actual Result
>>> object.
>>>
>>> The way that DefaultActionInvocation is programmed to do this though
>>> makes
>>> it impossible, despite the Javadocs explicitly stating otherwise e.g.
>>>
>>> http://struts.apache.org/2.1.6/struts2-core/apidocs/com/opensymphony/xwork2/ActionInvocation.html#getResult()
>>>
>>> Then I can't call the create result method since it's not on the
>>> interface.
>>>
>>> Even when I cast the ActionInvocation and call the create method and
>>> faithfully add my redirect parameter, the result gets overwritten later
>>> anyway.
>>>
>>> It looks like I must downgrade from here - unless anyone can think of
>>> another way of programmatically adding the parameters to the redirect
>>> URL.
>>>
>>>
>>> Adam
>>>
>>>
>>>
>>>
>>>
>>> Adam Hardy on 04/02/09 16:34, wrote:
>>>>
>>>>  From the ActionConfig.Builder#build() javadoc:
>>>>
>>>> "The builder for this object.  An instance of this object is the only
>>>> way
>>>> to construct a new instance.  The purpose is to enforce the immutability
>>>> of
>>>> the object.  The methods are structured in a way to support chaining.
>>>> After
>>>> setting any values you need, call the {...@link #build()} method to create
>>>> the object."
>>>>
>>>>
>>>> I assume there was some issue behind the scenes with robustness.
>>>>
>>>> For the long term it would be good to have an official struts method to
>>>> set the HTTP params programmatically.
>>>>
>>>> What I'm going to do now is code up a Result class to extend
>>>> ServletActionRedirectResult - someone give me a shout if I'm barking up
>>>> the
>>>> wrong tree.
>>>>
>>>> Thanks
>>>> Adam
>>>>
>>>>
>>>> Adam Hardy (struts) on 04/02/09 15:16, wrote:
>>>>>
>>>>> I'm prevented from adding my redirect parameter programmatically with
>>>>> 2.1.6!
>>>>>
>>>>> Look:
>>>>>
>>>>> Map<String, ResultConfig> resultsMap =
>>>>>   ServletActionContext.getActionContext(getRequest())
>>>>>       .getActionInvocation().getProxy().getConfig().getResults();
>>>>> ResultConfig config = resultsMap.get(resultName);
>>>>> Map<String, String> params = config.getParams();
>>>>> params.put(paramName, paramValue.toString());
>>>>>  causes:
>>>>> java.lang.UnsupportedOperationException
>>>>>   at java.util.Collections$UnmodifiableMap.put(Collections.java:1285)
>>>>>
>>>>> Or am I jumping to conclusions again?
>>>>>
>>>>> Adam
>>>>>
>>>>> --- original message author="Musachy Barroso"
>>>>>>
>>>>>> I think just need to pass a string, instead of an object in the value
>>>>>
>>>>> param.
>>>>>>
>>>>>> musachy
>>>>>>
>>>>>> On Mon, Jan 26, 2009 at 10:37 AM, Adam Hardy wrote:
>>>>>> Hi,
>>>>>>
>>>>>> got a compilation error after upgrading from 2.0.11 to 2.1.6 due to
>>>>>> changes
>>>>>> in com.opensymphony.xwork2.config.entities.ResultConfig
>>>>>>
>>>>>> I am doing this:
>>>>>>
>>>>>>  public boolean addRedirectParameter(String resultName, String
>>>>>> paramName,
>>>>>>      Object paramValue)
>>>>>>  {
>>>>>>      Map<String, ResultConfig> resultsMap =
>>>>>>          ServletActionContext.getActionContext(getRequest())
>>>>>>
>>>>>> .getActionInvocation().getProxy().getConfig().getResults();
>>>>>>      ResultConfig config = resultsMap.get(resultName);
>>>>>>      if (config == null)
>>>>>>      {
>>>>>>          return false;
>>>>>>      }
>>>>>>      else
>>>>>>      {
>>>>>>          config.addParam(paramName, paramValue);  // 2.1.6 COMPILE
>>>>>> ERROR
>>>>>>          return true;
>>>>>>      }
>>>>>>  }
>>>>>>
>>>>>>
>>>>>> which I can call in my actions in order to put another parameter onto
>>>>>> the
>>>>>> redirect URL of my result.
>>>>>>
>>>>>> In 2.1.6, ResultConfig has no addParam() method anymore.
>>>>>>
>>>>>> After checking the upgrade troubleshooting guide and the user lists,
>>>>>> it
>>>>>> seems nobody else is suffering from this problem. Could somebody give
>>>>>> me an
>>>>>>  idea how to deal with this?
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>>> For additional commands, e-mail: user-h...@struts.apache.org
>>>
>>>
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>
>



-- 
"Hey you! Would you help me to carry the stone?" Pink Floyd

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to