[
https://issues.apache.org/jira/browse/TAP5-1558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robert Zeigler closed TAP5-1558.
--------------------------------
Resolution: Fixed
Fix Version/s: 5.3
Users can override the default behavior by supplying a js function that is
called to determine whether the boundary condition has been met. Default is a
function that examines tagName for "FORM", preserving original behavior.
> FormFragment should allow more fine grained control over when to be
> considered "invisible"
> ------------------------------------------------------------------------------------------
>
> Key: TAP5-1558
> URL: https://issues.apache.org/jira/browse/TAP5-1558
> Project: Tapestry 5
> Issue Type: Improvement
> Components: tapestry-core
> Affects Versions: 5.3
> Reporter: Robert Zeigler
> Assignee: Robert Zeigler
> Priority: Minor
> Fix For: 5.3
>
>
> The 5.2 line of Tapestry introduced the "alwaysSubmit" parameter to form
> fragment. This is nice because it allows the fragment to be submitted even
> if hidden. However, it doesn't cover all use cases. Consider a situation
> like:
> <form>
> <div id="tab1">...<t:formfragment ...><t:textfield
> validate="required".../></t:formfragment></div>
> <div id="tab2">...<t:formfragment ...><t:textfield
> validate="required".../></t:formfragment></div>
> <t:submit/>
> </form>
> User reveals tab 1, then reveals the form fragment on tab1 and makes changes.
> Now user reveals tab2. Note that the fragment on tab1 is still revealed in
> the context of tab1, but the entire tab1 is hidden. There is currently no
> way to make it so that "submit" will submit the information from the
> formfragment in both tabs and behave correctly in all situations. I will
> enumerate. Some definitions for clarity:
> fragmentX is the fragment on tabX.
> fragmentX visibility refers to the state of the actual fragment, rather than
> the state of the containing tab. So if fragment1 is visible, it means it's
> visible when tab1 is active... and I am considering it visible when tab2 is
> active, even though the entire tab1 is invisible.
> 1) If "alwaysSubmit" is false and fragment1 is invisible, you will get the
> correct behavior regardless of tab1/tab2 visibility
> 2) If "alwaysSubmit" is false and fragment1 is visible, you will get the
> correct behavior iff tab1 is active. If tab2 is active, fragment1's fields
> will not be submitted.
> 3) If "alwaysSubmit" is true and fragment1 is invisible, you will get
> incorrect behavior (well, technically, it's "correct": the information will
> be submitted, as per alwaysSubmit, but this is a case where you don't
> actually /want/ the information submitted if the fragment isn't visible)
> 4) If "alwaysSubmit" is true and fragment is visible, you will get correct
> behavior.
> You can conditionally "alwaysSubmit": alwaysSubmit on the same condition for
> visibility as the "visible" trigger. The problem here comes in the following
> scenario:
> User opens a page with fragment1 initially visible, but no data yet in the
> required field. User marks fragment1 as invisible. User submits the form.
> The submission will fail because "alwaysSubmit" was true at the time the form
> rendered.
> The culprit behind this is Tapestry's "isDeepVisible" method. It searches
> for visibility up to the point where it finds a form element. But in the
> case above, the form element contains the tab divs, so the fragment is
> determined to be invisible and the data not submitted for the inactive tab,
> even if the user clicked on the trigger to make the fragment visible while
> the tab was active.
> This is something of an edge case, but I think it can be handled cleanly by
> introducing a new parameter to formfragment, such as "visiblebound" (but
> better named!). The idea is to allow developers to specify an element or
> selector expression that bounds the search for visibility. The default would
> be the containing form element which would preserve the current behavior.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira