I did some experimenting with this by removing the lazy load and putting
the actual object directly on a property in the action class. This had
no effect.
So then I created a catch-all method setKeywordList(Object obj) to see
what was being passed in. The actual data being passed in is a single
element String array. The only element in the array is a string
"keywordl...@1f75664" ie. the Struts param tag is calling toString() on
the object and passing the resulting string inside an array to the
action class.
I would say this is a regression bug from 2.0.x, yes?
Raj.
On 16/11/2010 9:18 PM, Raj Nagappan wrote:
Hi,
The parameter is definitely an object, if I replace the JSP below with
<h1><s:property value="photoSet.keywordListLazyLoad"/></h1>
<h1><s:property value="photoSet.keywordListLazyLoad.id"/></h1>
I get keywordl...@3bcdf1, 15
which is correct. Furthermore if I add a setKeywordList(String[]
param) method or setKeywordList(String param) method into the action
class, it never invokes those new methods but still throws exactly the
same exception.
The only other thing I can think of is that it's trying to set the
cglib proxy object on the action class and is complaining about that.
We are using cglib-nodep-2.2 to lazy load the KeywordList, and it
worked perfectly fine in Struts 2.0.
(Sorry if this appears multiple times, I keep getting a spam rejection
notice.)
Raj.
On 6:59 AM, Li Ying wrote:
"[Ljava.lang.String;" means a String array.
Looks like you are trying to copy a List from one action to another.
By somehow, struts2 is looking for a set method which take a String
array as it's parameter.
2010/11/15 Raj Nagappan<r...@velocitylabs.com>:
Hi, we recently upgraded from Struts 2.0.14 to 2.2.1 and I notice that
the following JSP code to inject an object property from one action
into
another action has stopped working:
<s:if test=hotoSet.keywordListLazyLoad != null">
<s:action namespace=search" name="KeywordList" executeResult="true"
ignoreContextParams=rue">
<s:param name=eywordList" value="photoSet.keywordListLazyLoad"/>
</s:action>
</s:if>
So it checks that the object is not null and then tries to set it on
the
parameter "keywordList". This worked perfectly fine in 2.0.x, but in
2.2
on the server side we get:
java.lang.NoSuchMethodException:
KeywordListAction.setKeywordList([Ljava.lang.String;)
  at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1226)
  at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1474)
  at
ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
  at
ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
And the resulting error displayed on the web page is:
Exception name: No result defined for action KeywordListAction and
result input
No result defined for action KeywordListAction and result input at
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:375)
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277)
at
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
at
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept
(AnnotationValidationInterceptor.java:68) at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept
Is this a bug or do I need to do something differently for 2.2?
Raj.
---------------------------------------------------------------------
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