问题描述
- 【JSF/PrimeFaces】查询条件与查询结果两个panel隐藏与展示的问题
- 【环境】
JSF2.2+PrimeFaces5
【需求】
查询功能实现:- 用户进入查询界面,输入查询条件(大概有十几个,占了半个页面)
- 点击“查询”按钮后,进入查询结果页面
- 查询结果页面有一个“新查询”的按钮,点击可以清空之前的查询条件,回到查询页面
【实现】
我用了一个页面来展示查询条件和查询结果,点击查询按钮时,隐藏查询条件panel,显示查询结果panel;点击“新查询”按钮时,隐藏查询结果panel,显示查询条件panel【代码】
xhtml:<p:panel id=""searchFormPanel"" binding=""#{basicSearchUi.searchFormPanel}""> <h:form id=""searchForm"" method=""post""> <p:commandButton value=""查询"" actionListener=""#{basicSearchUi.doBasicSearch}"" update="":#{p:component('resultForm')} :#p:component('searchFormPanel')}""></p:commandButton> </p:form>... <p:panel id=""resultFormPanel"" binding=""#{basicSearchUi.resultFormPanel}""> <h:form id=""resultForm"" method=""post""> <p:commandButton value=""新查询"" action=""#basicSearchUi.newSearch()}""></p:commandButton> </h:form>
java(backingbean):
Panel searchFormPanel; Panel resultFormPanel; public void doBasicSearch() { ... searchFormPanel.setVisible(false); resultFormPanel.setVisible(true); ... } public void newSearch() { if(searchResult!=null) searchResult.clear(); searchCriteria = new BasicSearchVO(); searchFormPanel.setVisible(true); searchFormPanel.setRendered(true); resultFormPanel.setVisible(false); }
【问题】
当点击“查询”时,查询条件panel能正确的隐藏,查询结果panel显示查询到的记录;但是,当点击“新查询”时,查询结果panel隐藏了,而查询条件panel却无法显现! 直接查看在chrome里查看html,发现查询条件panel根本就没有生成任何html代码。【疑惑1】
visible=false的含义跟rendered=false的含义应该是不同的,前者应该生成html而后者不生成
【疑惑2】
我是jsf新手,请问这样处理查询条件、查询结果的姿势对吗(一个页面搞定)?还是说需要拆分成两个页面?因为查询结果有分页,而我需要一次查出所有记录,方便分页展示和排序,一个页面貌似更方便!
时间: 2024-10-22 03:46:33