[ 
https://issues.apache.org/jira/browse/TAP5-2774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17839493#comment-17839493
 ] 

Ben Weidig commented on TAP5-2774:
----------------------------------

I tried to reproduce the issue without success.

Can you provide a rudimentary/stripped-down example?

This is my working setup of a page with a form in a zone that tirggers the 
rerender of another component with a form which is in another zone:
{code:java}
public class FormTest {

    @Inject
    private Request request;

    @Inject
    private AjaxResponseRenderer ajax;

    @InjectComponent
    private Zone outer, rerender;

    @OnEvent(EventConstants.SUBMIT)
    public Object onSubmit() {
        this.ajax.addRender(this.rerender);
        return this.outer;
    }
}
{code}
{code:xml}
<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";>
    <t:zone t:id="outer">
        <t:form t:id="A" t:zone="^">
            <t:submit />
        </t:form>
    </t:zone>
    
    <t:zone t:id="rerender">
        <t:formTestComponent />
    </t:zone>
</t:layout>
{code}
The component containts another t:form

Even though I've seen the "nested form" Exception many times in my own apps, it 
was usually a subsequent issue with a previous Exception already creating an 
inhospitable rendering environment that leads to the additional Exception.
However, it would be nicer to have a more expressive Exception at that point.

> Form in form error when forms are not inside one another.
> ---------------------------------------------------------
>
>                 Key: TAP5-2774
>                 URL: https://issues.apache.org/jira/browse/TAP5-2774
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.8.2
>            Reporter: Maximillian Steinbach
>            Priority: Critical
>
> I have t:form (form A) with an onSubmit action. This form's submit action 
> triggers an ajax reload. The part of the page that is being reloaded is 
> different to that of form A. The area being reloaded contains another t:form 
> (form B) that must be re-rendered. While it is re-rendering form B it hits an 
> exception at
> org.apache.tapestry5.corelib.components.Form.setupRender(Form.java:330)
> The error is "Form components may not be placed inside other Form 
> components." 
> It seems that there is a check here to see if there is an existing outer 
> enclosing form in the process of being rendered. However the existing form it 
> finds is the form A that is not an enclosing form, it is the form that 
> triggers the submit action. Form A seems to be pushed into the environment on 
> line 503 in the method onAction.
> I have taken a look at the git history here and there doesn't seems to have 
> been any recent changes to this code so I am confused why this issue has 
> begun on my end.
> As such, the result of this bug seems to be that a form's onSubmit action can 
> never trigger the reload of another component that itself contains a form. 
> This seems to be problematic.
> I can take a look at addressing this issue myself but I would appreciate 
> other's more experienced input first before I attempt it.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to