Adam
Adam

Reputation: 3795

What should be the scope of forms when using ui:include?

In a situation where a number of sub-pages will be included using ui:include where should the h:form tag go?

The form should be in the parent (A.xhtml and B.xhtml)?

A.xhtml excerpt

<h:form>
    <ui:include src="B.xhtml" />
    <ui:include src="other.xhtml" />
</h:form>

B.xhtml exerpt

<ui:composition>
    tag contents here
</ui:composition>

The form should be in each child (C.xhtml and D.xhtml)?

C.xhtml excerpt

<ui:include src="D.xhtml" />
<ui:include src="other.xhtml" />

D.xhtml excerpt

<ui:composition>
    <h:form>
    </h:form>
</ui:composition>

Bonus internet points if you can elaborate on how this works with the Richfaces variation of form and in the first example how regions might be used to isolate each sub-file.

Also, is nesting forms a possibility? It would be like having A.xhtml use D.xhtml.

Upvotes: 1

Views: 1775

Answers (1)

mrembisz
mrembisz

Reputation: 12870

The first thing is you can't nest forms. Otherwise it depends heavily on your page structure, logic and action buttons/links placement.

When action is triggered it will submit to the server content of the form it is contained in. Therefore it is good when form content corresponds to some business entity which makes sense to be sent together. An extreme approach is to create a single form for the entire page. It will submit all of your inputs at each user interaction. It may make sense in some cases but if your page contains several logically distinct areas I would rather make them into separate forms.

I don't think any extra rules apply when using ui:include, this is one of the possible composition techniques while form layout seems more business structure driven.

Upvotes: 3

Related Questions