rich:panelBar 3.2.0.GA does not work in JSP when bound to ma
benoutram Apr 16, 2008 12:26 PMI have found that rich:panelBar does not work in a JSP if it is bound to a managed bean. However it works fine in a Facelet.
Below I have included the managed bean and both the JSP and Facelet files.
Environment:
Java: jdk1.6.0_04
JSF: Reference Impl 1.2_04-b10-p01
IDE: Netbeans 6.0.1 (Build 200801291616)
Application Server: Tomcat 6.0.14
Richfaces: 3.2.0.GA
Libraries:
JSF 1.2
JSTL 1.1
Facelets 1.1.13
Commons BeanUtils 1.7.0
Commons Collections 3.2
Commons Digester 1.8
Commons Logging 1.1
Faces-Config:
<?xml version='1.0' encoding='UTF-8'?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <application> <view-handler> com.sun.facelets.FaceletViewHandler </view-handler> </application> <managed-bean> <managed-bean-name>homeBean</managed-bean-name> <managed-bean-class>HomeBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> </faces-config>
Web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <param-name>com.sun.faces.verifyObjects</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>com.sun.faces.validateXml</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> <context-param> <param-name>org.richfaces.SKIN</param-name> <param-value>blueSky</param-value> </context-param> <context-param> <param-name>facelets.VIEW_MAPPINGS</param-name> <param-value>*.xhtml</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <filter> <display-name>RichFaces Filter</display-name> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>faces/home.jsp</welcome-file> </welcome-file-list> </web-app>
Managed bean:
import javax.faces.component.html.HtmlOutputText;
import org.richfaces.component.html.HtmlPanelBar;
import org.richfaces.component.html.HtmlPanelBarItem;
/**
* Backing bean for the Home page.
*
* @author Benjamin Outram.
*/
public class HomeBean
{
private HtmlPanelBar newsItems;
public HomeBean()
{
newsItems = new HtmlPanelBar();
newsItems.getChildren().add(buildNewsPanelItem());
}
private HtmlPanelBarItem buildNewsPanelItem()
{
HtmlPanelBarItem result = new HtmlPanelBarItem();
result.setLabel("label text");
HtmlOutputText content = new HtmlOutputText();
content.setEscape(false);
content.setValue("body text");
result.getChildren().add(content);
return result;
}
public HtmlPanelBar getNewsItems()
{
return newsItems;
}
public void setNewsItems(HtmlPanelBar newsItems)
{
this.newsItems = newsItems;
}
}
JSP (home.jsp):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<f:view>
<html>
<head>
</head>
<body>
<h2>home.jsp</h2>
<rich:panelBar binding="#{homeBean.newsItems}"/>
</body>
</html>
</f:view>
Facelet (home.xhtml):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich">
<head>
<title>
</title>
</head>
<body>
<h2>home.xhtml</h2>
<rich:panelBar binding="#{homeBean.newsItems}"/>
</body>
</html>