我在几天内遇到了一些麻烦,我们无法在网上找到解决问题的好方法。所以我会放在这里,希望任何人都可以帮助我和其他有同样问题的人。
我们有一个包含一些p:selectOneMenu
组件的大表单。当用户想要一个额外选项时,他可以单击组件侧面的加号按钮,重定向到新页面以创建并在db上保存新选项。
我们使用keepAlive函数使其工作得很好,该函数通过屏幕保存所需的对象。但是我们有一些必填字段在空白时阻止加号按钮。
将按钮切换为immediate="true"
并没有多大帮助,因为这些字段没有传递给属性。
所以我们需要的是一种将字段传递给属性的方法,这样即使某些必填字段为空,我们也可以跨越屏幕!有没有人有想法可行?
答案 0 :(得分:2)
只有在真正按下保存按钮时才让required
属性评估true
。
<c:set var="saveButtonPressed" value="#{not empty param['form:save']}" />
<h:form id="form">
<p:selectOneMenu ... required="#{saveButtonPressed}" />
<p:inputText ... required="#{saveButtonPressed}" />
...
<p:commandButton id="save" ... />
</h:form>