Вложение форм недопустимо как в HTML, так и в JSF, поскольку все, что он делает, - это просто генерирует HTML. Вы должны поместить их рядом друг с другом.
Если у вас есть несколько кнопок в одной форме, из которых вы хотите пропустить определенную проверку при нажатии определенной кнопки, то добавьте immediate="true"
к соответствующей кнопке. Таким образом, все поля ввода, которые не имеют immediate="true"
, будут пропущены.
Смотри также:
Обновление : ОК, вам нужны две физически отдельные формы внутри одной формы. Если разделение «Божественной Формы» на несколько форм с каждой отдельной ответственностью не является вариантом, то есть несколько способов обойти это:
Если вы не используете Ajax и у вас просто есть required="true"
на элементе ввода, который вы фактически хотите сделать ненужным при нажатии определенной кнопки, то выполните:
<h:form>
...
<h:commandButton value="Submit form but but do not validate comment" />
...
<h:inputTextarea id="comment" required="#{not empty param[foo.clientId]}" immediate="true" />
<h:commandButton binding="#{foo}" value="Submit and validate comment" immediate="true" />
</h:form>
Если вы действительно используете Ajax, просто укажите регион выполнения в атрибуте execute
.
<h:form>
<h:panelGroup id="other">
....
<h:commandButton value="Submit form but but do not validate comment">
<f:ajax execute="other" render="other" />
</h:commandButton>
</h:panelGroup>
<h:panelGroup id="comments">
<h:inputTextarea required="#{not empty param[foo.clientId]}" />
<h:commandButton value="Submit and validate comment by ajax">
<f:ajax execute="comments" render="comments" />
</h:commandButton>
</h:panelGroup>
</h:form>