<h:form prependId="false" id="parentForm">
...
<h:form prependId="false" id="commentForm">
...
add comment
</h:form>
save
</h:form>
不起作用...
如果没有内部表单,当我只想添加注释时,父级的元素就会得到验证。
“添加评论”应该只验证评论,当单击“保存”时,应该验证父级。
嵌套表单在 HTML 中是非法的,在 JSF 中也是如此,因为它所做的只是生成 HTML。您需要将它们放在一起。
如果您有多个相同形式的按钮,并且您想在按下某些按钮时跳过某些验证,请添加immediate="true"
到有问题的按钮。这样所有的输入字段都可以not have immediate="true"
将被跳过。
也可以看看:
- 是什么immediate属性用于? https://stackoverflow.com/questions/4731740/doubt-on-immediate-attribute-for-command-button
Update:好的,您希望在一个表单中包含两个物理上独立的表单。如果无法将“神形态”拆分为多种形式并各自负责,那么有几种方法可以解决这个问题:
如果你不使用 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)