It appears that exception is occuring when Struts is attempting to set the
value.  I'm betting the list is empty and it's calling .get(5) (or whatever
the first index happens to be), so it can call .setName() on it, and blowing
up because there ain't one.  If youvare trying to update an existing list
make your Action implement Preparable and retrieve the existing list so you
can return it when Struts calls getBeanList.
  (*Chris*)
On Apr 29, 2011 1:08 PM, "Joe" <fullmit...@lycos.com> wrote:
> Dave Newton-6 wrote:
> Try the square brackets again.
>
> Chris Pratt wrote:
> Try: value="%{name}"
>
> That gets the value into the textbox, but when I submit the form, I get
either nothing in the action (square brackets) or an exception (using curly
brackets):
>
> <s:iterator value="beanList" var="bean">
> <s:textfield theme="simple" name="beanList(%{#bean.id}).name"
value="%{name}" /><br>
> </s:iterator>
>
> All my save action does is print out the array.
>
> public class TestAction implements Action {
> private static Logger log = Logger.getLogger(TestAction.class);
>
> // note: getters/setters/execute method already posted removed
>
> public String save(){
> log.debug("save: beanList size: "+beanList.size());
> for (int i = 0; i < beanList.size(); i++){
> log.debug(beanList.get(i));
> }
> return SUCCESS;
> }
> }
>
> The SUCCESS result is mapped to a blank JSP:
>
> <action name="saveTest" method="save" class="gmi.action.test.TestAction">
> <result name="success">/test2.jsp</result>
> </action>
>
> The exception from the curly-brace version is:
>
> [2011-04-29 15:57:29,802] ERROR
nsymphony.xwork2.ognl.accessor.XWorkMethodAccessor - An unexpected exception
occurred
> java.util.NoSuchElementException
> at java.util.AbstractList$Itr.next(AbstractList.java:350)
> at
com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAcce
> ssor.java:122)
> at
com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:81)
> at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:846)
> at
com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.callMethod(CompoundRootAccessor.java:232)
> at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:846)
> at ognl.ASTMethod.getValueBody(ASTMethod.java:73)
> at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
> at ognl.SimpleNode.getValue(SimpleNode.java:210)
> at ognl.ASTChain.setValueBody(ASTChain.java:168)
> at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
> at ognl.SimpleNode.setValue(SimpleNode.java:246)
> at ognl.Ognl.setValue(Ognl.java:476)
> at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:209)
> at
com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:173)
> at
com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:160)
> at
com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:151)
> at
com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:288)
> at
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:199)
> at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
> at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:19
> 0)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:
> 141)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
> at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:18
> 7)
> at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
> at
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
> at
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
> at
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
> at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
> at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
> at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
> at weblogic.security.service.SecurityManager.runAs(Unknown Source)
> at
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
> at
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
> at
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
> at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
> at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
> [2011-04-29 15:57:29,802] WARN com.opensymphony.xwork2.ognl.OgnlValueStack
- Error setting expression 'beanList(
> 1).name' with value '[Ljava.lang.String;@1f848d1'
> ognl.OgnlException: target is null for setProperty(null, "name",
[Ljava.lang.String;@1f848d1)
> at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1651)
> at ognl.ASTProperty.setValueBody(ASTProperty.java:101)
> at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
> at ognl.SimpleNode.setValue(SimpleNode.java:246)
> at ognl.ASTChain.setValueBody(ASTChain.java:172)
> at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
> at ognl.SimpleNode.setValue(SimpleNode.java:246)
> at ognl.Ognl.setValue(Ognl.java:476)
> . . .
> repeated several times
> Is this a problem with type conversion?
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>

Reply via email to