Jeremy Quinn wrote:
Hi All,
I have some forms that used the JX Macro form generator and AJAX, that
worked before the recent update to the 2.2 version of CForms, but fail
now.
The form contains some regular text fields, a repeater with a row-add
button and a union with associated selection widget.
The repeater works fine.
The union with it's selection widget stopped working when I updated.
I can see in TCPMon, when you change the selector menu, all the right
data is submitted.
I get this error when the on-change event occurs for the union selector :
org.apache.cocoon.forms.FormsRuntimeException: Form is not a repeater
at fd:form - file:/[blah]/forms/[blah]-model.xml:5:2
at <jx:if> - resource://org/apache/cocoon/forms/generation/
jx-macros.xml:214:54
at <ft:repeater> - file:/[blah]/forms/[blah]-template.xml:30:35
. . .
I was seeing this problem (or a very similar one that gives the same
error) in my app too, and found a way to reproduce it in the samples.
Open tasktree_template.xml (which is supposedly supposed to be an AJAX
sample but has ajax="false" for some reason) and change it to
ajax="true". Launch the sample, click "Add Subtask" and then click the
"Add Subtask" in the added task. You'll get the error in question.
Here's the relevant portion of the Java stacktrace:
org.apache.cocoon.forms.FormsRuntimeException: Form is not a repeater
at fd:form -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/forms/tasktree.xml:25:57
at <jx:if> -
resource://org/apache/cocoon/forms/generation/jx-macros.xml:214:54
at <ft:repeater> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/forms/tasktree_template.xml:93:33
at <jx:eval> -
resource://org/apache/cocoon/forms/generation/jx-macros.xml:138:59
at <ft:new> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/forms/tasktree_template.xml:117:36
at <jx:evalBody> -
resource://org/apache/cocoon/forms/generation/jx-macros.xml:34:23
at <ft:form-template> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/forms/tasktree_template.xml:68:94
at <map:serialize type="xml"> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/sitemap.xmap:216:32
at <map:transform type="i18n"> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/sitemap.xmap:210:35
at <map:transform> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/sitemap.xmap:209:66
at <map:transform> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/sitemap.xmap:62:88
at <map:transform type="i18n"> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/sitemap.xmap:203:35
at <map:transform type="browser-update"> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/sitemap.xmap:202:46
at <map:generate type="jx"> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/sitemap.xmap:201:79
at resource://org/apache/cocoon/forms/flow/javascript/Form.js:180:-1
at
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/flow/forms_flow_example.js:0:-1
at <map:call> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/forms/sitemap.xmap:170:38
at <map:mount> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/blocks/sitemap.xmap:66:68
at <map:mount> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/samples/sitemap.xmap:194:65
at <map:mount> -
file:/home/jj/workspace/cocoon-2.1.x/build/webapp/sitemap.xmap:728:66
at
org.apache.cocoon.forms.generation.JXMacrosHelper.pushRepeater(JXMacrosHelper.java:240)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:268)
at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:61)
at
org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:68)
at
org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:50)
at
org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:86)
at
org.apache.cocoon.generation.JXTemplateGenerator.getValue(JXTemplateGenerator.java:799)
at
org.apache.cocoon.generation.JXTemplateGenerator.execute(JXTemplateGenerator.java:2654)
at
org.apache.cocoon.generation.JXTemplateGenerator.call(JXTemplateGenerator.java:2537)
at
org.apache.cocoon.generation.JXTemplateGenerator.execute(JXTemplateGenerator.java:2919)
at
org.apache.cocoon.generation.JXTemplateGenerator.execute(JXTemplateGenerator.java:3055)
at
org.apache.cocoon.generation.JXTemplateGenerator.call(JXTemplateGenerator.java:2537)
at
org.apache.cocoon.generation.JXTemplateGenerator.execute(JXTemplateGenerator.java:2919)
at
org.apache.cocoon.generation.JXTemplateGenerator.execute(JXTemplateGenerator.java:3064)
at
org.apache.cocoon.generation.JXTemplateGenerator.call(JXTemplateGenerator.java:2537)
at
org.apache.cocoon.generation.JXTemplateGenerator.execute(JXTemplateGenerator.java:2919)
at
org.apache.cocoon.generation.JXTemplateGenerator.performGeneration(JXTemplateGenerator.java:2497)
at
org.apache.cocoon.generation.JXTemplateGenerator.generate(JXTemplateGenerator.java:2488)