Summary
Tag name: <t:subform>
UIComponent class: org.apache.myfaces.custom.subform.SubForm
Tag class: org.apache.myfaces.custom.subform.SubFormTag
Component type: org.apache.myfaces.SubForm
Component family: org.apache.myfaces.SubForm
Renderer type: org.apache.myfaces.SubForm
Renderer class: org.apache.myfaces.custom.subform.SubFormRenderer
A SubForm which will allow for partial validation
and model update.
A subform to an existing form. Inputs in this form will only be validated and updated, if a t:commandButton or t:commandLink has been clicked with an actionFor attribute which references the client-id of this subform. Optionally, the validation will trigger if a commandButton or commandLink embedded in this subform has been clicked, except if this command is a t:commandButton or t:commandLink with an actionFor attribute which doesn't reference the client-id of this subform.
Components will be validated and updated only if either a child-component of this form caused the submit of the form, or an extended commandLink or commandButton with the actionFor attribute set to the client-id of this component was used.
You can have several comma-separated entries in the actionFor-attribute - with this it's possible to validate and update more than one subForm at once.
Usage
<h:form> <t:subForm id="subFormId"> <h:inputText value="#{bean.value}" /> </t:subForm> <t:commandButton value="Submit subForm" actionFor="subFormId"/> </h:form>
<h:form> <t:subForm id="subFormId"> <h:inputText value="#{bean.value}" /> <t:commandButton value="Submit subForm"/> </t:subForm> </h:form>
<h:form> <t:subForm id="subFormId" preserveSubmittedValues="false"> <h:inputText value="#{bean.value}" /> <t:commandButton value="Submit subForm"/> </t:subForm> </h:form>
Additional Information
There are cases when the subForm needs to be submitted not just by clicking a button inside or outside of it, but by clicking or changing fields like combo-boxes, check-boxes or radio-buttons, or many other fields; usualy this is done by invoking a JavaScript code in their "onchange" attribute for example. It's possible to submit the subForm also by JavaScript, if id="subFormId" then you just have to invoke "subFormId_submit()". For an example see subForm.jsp in the Tomahawk examples.
Attributes
Name | Type | Supports EL? | Description |
---|---|---|---|
binding | String | Only EL | Identifies a backing bean property (of type UIComponent or appropriate subclass) to bind to this component instance. This value must be an EL expression. |
id | String | Yes | An identifier for this particular component instance within
a component view.
The id must be unique within the scope of the tag's enclosing NamingContainer (eg h:form or f:subview). The id is not necessarily unique across all components in the current view This value must be a static value, ie not change over the lifetime of a component. It cannot be defined via an EL expression; only a string is permitted. |
preserveSubmittedValues | Boolean | Yes | true|false - set to false if you submit other subforms and would like to have your subform reflecting any model update. Default: true |
rendered | boolean | Yes | A boolean value that indicates whether this component should be rendered. Default value: true. |