我需要你推荐一个JSF组件,它可以在以下场景中提供帮助(我将首先粘贴一个可以帮助我解释的图像):
您在图片中看到的页面是注册页面,每个面板都有不同的字段和小工具,单击注册按钮时,新用户将保存到数据库中。
我遇到的问题是显示按钮。单击每个面板顶部的按钮应显示一个面板并隐藏另一个面板,但它们不得触发现场验证。
我使用大多数JSF输入字段具有的属性“validator”(结合支持bean方法)进行字段验证。 目前你在那里看到的一切都在一个h:form。
中- 如何在不触发隐藏面板验证的情况下显示面板并隐藏另一面板?
- 是否有另一种替代h:commandLink或h:commandButton(它们会触发验证)?
- 以不同的h:形式输入每个面板可以做到这一点吗?(这是否有效?)
- 你认为最好的方法是什么?
答案 0 :(得分:3)
使用p:tabView的primefaces,然后将你的内容(注册面板)放在单独的标签中,为两个标签使用单独的表格,它将解决你的问题....
e.g。
<p:tabView>
<p:tab title="panel1">
<h:form id="form1" prependId="false">
<h:inputText label="Sample Label"/>
<p:commandButton value="register"/>
</h:form>
</p:tab>
<p:tab title="panel2">
<h:form id="form2" prependId="false">
<h:inputText label="Sample Label"/>
<p:commandButton value="register"/>
</h:form>
</p:tab>
</p:tabView>
答案 1 :(得分:1)
- 如何在不触发隐藏面板验证的情况下显示面板并隐藏另一面板?
使用两个h:form
还有另一种替代h:commandLink或h:commandButton(它们会触发验证)?
进行POST,你必须只使用它们
我会为此目的使用rich:modalpanel
答案 2 :(得分:1)
对于面板的切换,为什么不使用JavaScript?
<h:commandButton value="Show panel 1" onclick="$('#panel1').hide();$('#panel2').show();return false;"/>
return false 会限制页面提交,因此页面不会刷新,因为没有数据回发到服务器,验证阶段永远不会执行。
底线:恕我直言,这可以在客户端处理。
答案 3 :(得分:0)
您知道immediate属性,允许刷新而不更改数据。
不幸的是,它不记得输入的更改,因此您最终可能会在您的操作中明确地执行验证而不是JSF本身。