[
https://issues.apache.org/struts/browse/WW-2598?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=43635#action_43635
]
Jeromy Evans commented on WW-2598:
----------------------------------
I agree with the issue but not with the proposed approach. We shouldn't
instantiate the Result ourselves using the *new* operator.
Instead we should be asking the Container's ObjectFactory to create a Result
with the necessary dependences already injected.
That should be simple, but it's not.
The ObjectFactory includes a buildResult method but it's not appropriate for
use in an action.
Result result = objectFactory.buildResult(resultConfig,
invocationContext.getContextMap());
Alternate proposal: expose a new API that requests the container to create a
result.
The least effort would be something like this:
eg. return ResultBuilder.createResult("redirectAction").withParam("actionName",
"${value1}");
where ResultBuilder either provides a static factory method or an instance can
injected into the action
(I'm not sure if the container supports static injection)
> automatically set ActionMapper for ServletRedirectResult
> --------------------------------------------------------
>
> Key: WW-2598
> URL: https://issues.apache.org/struts/browse/WW-2598
> Project: Struts 2
> Issue Type: Improvement
> Components: Core Actions
> Reporter: Brad Cupit
> Priority: Minor
>
> when a ServletRedirectResult (or a subclass of it, like
> ServletRedirectActionResult) is instantiated and returned as the Result for
> the Action, the ActionMapper must be manually set by the developer. So,
> instead of this
> // ideal situation
> public Result submit() {
> return new
> ServletActionRedirectResult("actionName").addParameter("param1", "${value1}");
> }
> the user must code this:
> // manually set the ActionMapper
> public Result submit() throws Exception {
> ServletActionRedirectResult result = new
> ServletActionRedirectResult("actionName").addParameter("param1", "${value1}");
> result.setActionMapper(actionMapper);
> return result;
> }
> and to get the ActionMapper in the Action, you have to add this setter:
> @Inject
> public void setActionMapper(ActionMapper actionMapper) { ... }
> This is a feature request/improvement so that the ActionMapper can be
> automatically set in (or looked up by) the ServletRedirectResult.
> see this mailing list post:
> http://article.gmane.org/gmane.comp.jakarta.struts.user/155271
> and this reply by Don Brown:
> http://article.gmane.org/gmane.comp.jakarta.struts.user/155272
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.