Win a copy of Rust Web Development this week in the Other Languages forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
  • Tim Cooke
  • Campbell Ritchie
  • Ron McLeod
  • Liutauras Vilda
  • Jeanne Boyarsky
  • Junilu Lacar
  • Rob Spoor
  • Paul Clapham
Saloon Keepers:
  • Tim Holloway
  • Tim Moores
  • Jesse Silverman
  • Stephan van Hulst
  • Carey Brown
  • Al Hobbs
  • Piet Souris
  • Frits Walraven

Switch rendering of a rich:panel

Posts: 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I want switch visibility of a rich panel using a button. Initially the panel is not visible. When I click the button nothing please !!!


This is the JSF code:
<a4j:form id="frm">
<a4j:commandButton value="Switch View" action="#{provaBean.change}" reRender="mypanel"/>
<rich:panel id="mypanel" header="Test Render" style="width: 700px" rendered="#{}">
<h:inputText id="myInput" value="#{provaBean.testo}"/>

This is the backing bean code (request scope):
public class ProvaBean {
private boolean show=false;

public boolean isShow() {
return show;

public void setShow(boolean show) { = show;

private String testo;

public String getTesto() {
return testo;

public void setTesto(String testo) {
this.testo = testo;

public void change() { = !;
this.testo = "changed";
Posts: 28
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi luca,

I am also a novice on RichFaces. But I think I can answer your question.

The keypoint is that the RichFaces will refresh the page content by Ajax. In other word, the new response from server will first scan the DOM tree. When it finds the mark of component in DOM tree, it will refresh the content of component.

In you case, when the page first time loaded from server to the browser, due to the 'render' attribute of 'mypanel' is 'false', there isn't any corresponding content about 'mypanel' rendered to page. After clicking the button, the 'render' attribute of 'mypanel' is set to 'true'. When the new response sent to browser, the browser failed to find the mark of 'mypanel' in DOM tree. Therefore, no change will be shown on the page.

To solve this problem, the recommended method is to place the component (which attribute is 'false' initially) into a container componet. And try to reRender this component every time.

Since this container will be rendered every time. When the new response sent to browser, the browser will be able to find the 'mypanel' successfully.

Just like following, very simple:

You can also use the <rich:panel> or other container component instead <h:panel>.

I hope it is helpful. Good luck!

    Bookmark Topic Watch Topic
  • New Topic