You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Faisal Mahmoud <fa...@gmail.com> on 2006/08/08 21:20:11 UTC
Issue with referencing a ManagedBean
Hi,
I am using Myfaces 1.1.3, with Spring 2.0. When I try to reference a managed
bean in my jsp files, I get a StringIndexOutOfBoundsException (String index
out of range: -1) thrown. I cannot understand for the life of me why this is
being thrown. It bubbles up to the top of the exception stack as a failure
in setting a property: javax.faces.el.PropertyNotFoundException: Expression:
'#{FtpSitesPage.siteList}'. Below are some application details, any help
would be greatly appreciated.
Regards,
Faisal
Here is my faces-config.xml for the managed bean. I use Springs delegating
variable resolver for the managed property, however, I know that this isn't
the problem, as the exception gets thrown even if I comment out the managed
property part.
<managed-bean>
<managed-bean-name>FtpSitesPage</managed-bean-name>
<managed-bean-class>
com.warnerbros.mam.saw.jsf.page.FtpSitesPage
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>ftpSiteDelegate</property-name>
<value>>#{ftpSiteDelegate}</value>
</managed-property>
</managed-bean>
Here is the jsp page (ftpSites.jsp) where the exception is thrown:
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<f:view>
<html>
<head>
<f:loadBundle
basename="com.warnerbros.mam.saw.jsf.msg.MessageResources"
var="bundle" />
<title><h:outputText value="#{bundle.ftpSites_page_title}" />
</title>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<link rel="stylesheet" type="text/css"
href="<%=basePath%>css/styles.css" />
<link rel="stylesheet" type="text/css"
href="<%=basePath%>css/color-scheme.css" />
</head>
<body>
<div id="top"></div>
<!-- #### Header #### -->
<div id="header">
<span class="headerTitle"><h:outputText
value="#{bundle.global_logo}" /> </span>
<div class="menuBar">
<%@ include file="/menus/topnav.jsp"%>
</div>
</div>
<div id="bodyText">
<h:form id="ftpSitesListForm">
<h:outputText value="#{bundle.ftpSites_page_welcome}"
style="font-family: tahoma, sans-serif; font-weight: bold;" />
<br />
<h:commandButton action="CreateFtpSite" value="#{
bundle.ftpSites_btn_new}" />
<br /><br />
<h:dataTable value="#{FtpSitesPage.siteList}" var="v"
border="0">
<h:column>
<f:facet name="header">
<h:outputText value="#{
bundle.ftpSites_tbl_name_hdr}" style="text-decoration: underline" />
</f:facet>
<h:outputText value="#{v.siteName}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{
bundle.ftpSites_tbl_address_hdr}"
style="text-decoration: underline" />
</f:facet>
<h:outputText value="#{v.siteUrl}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{
bundle.ftpSites_tbl_login_name_hdr}"
style="text-decoration: underline" />
</f:facet>
<h:outputText value="#{v.loginName}" />
</h:column>
<h:column>
<t:commandLink value="#{bundle.ftpSites_lnk_edit}"
action="EditFtpSite">
<f:param name="ftpSiteId" value="#{v.siteId
}"/>
</t:commandLink>
</h:column>
</h:dataTable>
</h:form>
</div>
</body>
</html>
</f:view>
Here is the full stack trace:
2006-08-08 11:34:47 ApplicationDispatcher[/saw] Servlet.service() for
servlet jsp threw exception
javax.faces.el.PropertyNotFoundException: Expression: '#{
FtpSitesPage.siteList}'
at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java
:397)
at javax.faces.component.UIData.getValue(UIData.java:1019)
at javax.faces.component.UIData.createDataModel(UIData.java:785)
at javax.faces.component.UIData.getDataModel(UIData.java:765)
at javax.faces.component.UIData.getRowCount(UIData.java:191)
at
org.apache.myfaces.shared_impl.renderkit.html.HtmlTableRendererBase.encodeInnerHtml
(HtmlTableRendererBase.java:140)
at
org.apache.myfaces.shared_impl.renderkit.html.HtmlTableRendererBase.encodeChildren
(HtmlTableRendererBase.java:100)
at javax.faces.component.UIComponentBase.encodeChildren(
UIComponentBase.java:524)
at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java
:480)
at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:361)
at org.apache.myfaces.shared_impl.taglib.UIComponentBodyTagBase.doEndTag
(UIComponentBodyTagBase.java:54)
at org.apache.jsp.file.ftp.ftpSites_jsp._jspx_meth_h_dataTable_0
(ftpSites_jsp.java:727)
at org.apache.jsp.file.ftp.ftpSites_jsp._jspx_meth_h_form_1
(ftpSites_jsp.java:635)
at org.apache.jsp.file.ftp.ftpSites_jsp._jspService
(ftpSites_jsp.java:170)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java
:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:157)
at org.apache.catalina.core.ApplicationDispatcher.invoke(
ApplicationDispatcher.java:704)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(
ApplicationDispatcher.java:474)
at org.apache.catalina.core.ApplicationDispatcher.doForward(
ApplicationDispatcher.java:409)
at org.apache.catalina.core.ApplicationDispatcher.forward(
ApplicationDispatcher.java:312)
at
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(
ServletExternalContextImpl.java:416)
at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(
JspViewHandlerImpl.java:234)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
:384)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:157)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(
ExtensionsFilter.java:144)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(
StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java
:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of
range: -1
at java.lang.String.substring(String.java:1444)
at org.apache.myfaces.config.ManagedBeanBuilder.extractExpressions(
ManagedBeanBuilder.java:402)
at org.apache.myfaces.config.ManagedBeanBuilder.isInValidScope(
ManagedBeanBuilder.java:208)
at org.apache.myfaces.config.ManagedBeanBuilder.initializeProperties(
ManagedBeanBuilder.java:167)
at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(
ManagedBeanBuilder.java:56)
at org.apache.myfaces.el.VariableResolverImpl.resolveVariable(
VariableResolverImpl.java:311)
at
org.springframework.web.jsf.DelegatingVariableResolver.resolveVariable(
DelegatingVariableResolver.java:108)
at org.apache.myfaces.config.LastVariableResolverInChain.resolveVariable
(LastVariableResolverInChain.java:42)
at
org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(
ValueBindingImpl.java:574)
at org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124)
at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:140)
at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java
:383)
... 56 more
2006-08-08 11:34:47 StandardWrapperValve[Faces Servlet]: Servlet.service()
for servlet Faces Servlet threw exception
javax.faces.FacesException: Expression: '#{FtpSitesPage.siteList}'
at
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(
ServletExternalContextImpl.java:435)
at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(
JspViewHandlerImpl.java:234)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java
:384)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:157)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(
ExtensionsFilter.java:144)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(
StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(
StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java
:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Caused by: javax.faces.el.PropertyNotFoundException: Expression: '#{
FtpSitesPage.siteList}'
at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java
:397)
at javax.faces.component.UIData.getValue(UIData.java:1019)
at javax.faces.component.UIData.createDataModel(UIData.java:785)
at javax.faces.component.UIData.getDataModel(UIData.java:765)
at javax.faces.component.UIData.getRowCount(UIData.java:191)
at
org.apache.myfaces.shared_impl.renderkit.html.HtmlTableRendererBase.encodeInnerHtml
(HtmlTableRendererBase.java:140)
at
org.apache.myfaces.shared_impl.renderkit.html.HtmlTableRendererBase.encodeChildren
(HtmlTableRendererBase.java:100)
at javax.faces.component.UIComponentBase.encodeChildren(
UIComponentBase.java:524)
at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java
:480)
at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:361)
at org.apache.myfaces.shared_impl.taglib.UIComponentBodyTagBase.doEndTag
(UIComponentBodyTagBase.java:54)
at org.apache.jsp.file.ftp.ftpSites_jsp._jspx_meth_h_dataTable_0
(ftpSites_jsp.java:727)
at org.apache.jsp.file.ftp.ftpSites_jsp._jspx_meth_h_form_1
(ftpSites_jsp.java:635)
at org.apache.jsp.file.ftp.ftpSites_jsp._jspService
(ftpSites_jsp.java:170)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java
:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:157)
at org.apache.catalina.core.ApplicationDispatcher.invoke(
ApplicationDispatcher.java:704)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(
ApplicationDispatcher.java:474)
at org.apache.catalina.core.ApplicationDispatcher.doForward(
ApplicationDispatcher.java:409)
at org.apache.catalina.core.ApplicationDispatcher.forward(
ApplicationDispatcher.java:312)
at
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(
ServletExternalContextImpl.java:416)
... 30 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of
range: -1
at java.lang.String.substring(String.java:1444)
at org.apache.myfaces.config.ManagedBeanBuilder.extractExpressions(
ManagedBeanBuilder.java:402)
at org.apache.myfaces.config.ManagedBeanBuilder.isInValidScope(
ManagedBeanBuilder.java:208)
at org.apache.myfaces.config.ManagedBeanBuilder.initializeProperties(
ManagedBeanBuilder.java:167)
at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(
ManagedBeanBuilder.java:56)
at org.apache.myfaces.el.VariableResolverImpl.resolveVariable(
VariableResolverImpl.java:311)
at
org.springframework.web.jsf.DelegatingVariableResolver.resolveVariable(
DelegatingVariableResolver.java:108)
at org.apache.myfaces.config.LastVariableResolverInChain.resolveVariable
(LastVariableResolverInChain.java:42)
at
org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(
ValueBindingImpl.java:574)
at org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124)
at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:140)
at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java
:383)
... 56 more
RE: Issue with referencing a ManagedBean
Posted by Faisal Mahmoud <fa...@gmail.com>.
Below is my managed bean. In the constructor, I get a reference to the managed
property from Spring just to verify that it is available. I placed breakpoints
in the code at the getSiteList() method, and my breakpoint is never hit prior to
the error occuring.
/**
*
*/
package com.warnerbros.mam.saw.jsf.page;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.warnerbros.mam.saw.jsf.delegates.FtpSiteDelegate;
import com.warnerbros.mam.saw.jsf.exc.BaseViewException;
import com.warnerbros.mam.saw.model.user.SawUser;
/**
* @author xfmahmou
*
*/
public class FtpSitesPage
{
/**
* Default no-args constructor
*/
public FtpSitesPage()
{
/**
// Test code to verify that the FtpSiteDelegate bean is being created by Spring
FacesContext facesContext = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext)
facesContext.getExternalContext().getContext();
ApplicationContext applicationContext =
WebApplicationContextUtils.getWebApplicationContext(servletContext);
Map beans = applicationContext.getBeansOfType(FtpSiteDelegate.class);
FtpSiteDelegate f = (FtpSiteDelegate) beans.get("ftpSiteDelegate");
*/
}
//PROPERTY: ftpSiteDelegate
public FtpSiteDelegate getFtpSiteDelegate() { return ftpSiteDelegate; }
public void setFtpSiteDelegate(FtpSiteDelegate ftpSiteDelegate) {
this.ftpSiteDelegate = ftpSiteDelegate; }
//PROPERTY: siteList
public List getSiteList()
{
// Retrieve SawUser from HttpSession
FacesContext facesContext = FacesContext.getCurrentInstance();
if (facesContext == null) { throw new NullPointerException("Retrieved NULL
reference to FacesContext instance."); }
logger.debug("Retrieved reference to FacesContext instance.");
HttpSession session = (HttpSession)
facesContext.getExternalContext().getSession(false);
if (session == null) { throw new NullPointerException("Retrieved NULL
reference to HttpSession instance."); }
logger.debug("Retrieved reference to HttpSession instance.");
SawUser sawUser = (SawUser) session.getAttribute("SawUser");
if (sawUser == null) { throw new NullPointerException("Retrieved a NULL
reference to the SawUser object retrieved from the HttpSession"); }
logger.debug("Retrieved a SawUser object from the HttpSession with userId = "
+ sawUser.getUserId());
List sites = null;
try
{
sites = this.ftpSiteDelegate.getFtpSitesBySawUser(sawUser);
}
catch (BaseViewException e)
{
logger.error(e);
//TODO: FacesMessage here
sites = new LinkedList();
}
if (sites == null)
{
// TODO: FacesMessage here
NullPointerException e = new NullPointerException("Retrieved a NULL reference
to a List of FtpSite objects.");
logger.error(e);
sites = new LinkedList();
}
logger.debug("Returning a List of FtpSites objects for SawUser, userId = " +
sawUser.getUserId());
return sites;
}
// View Associations
private FtpSiteDelegate ftpSiteDelegate;
// Private constant members
private final Log logger = LogFactory.getLog(this.getClass());
}
-----Original Message-----
From: octoberdan [mailto:dan@october5th.net]
Sent: Tuesday, August 08, 2006 2:27 PM
To: users@myfaces.apache.org
Subject: Re: Issue with referencing a ManagedBean
Do you mind posting your managedbean?
--
View this message in context:
http://www.nabble.com/Issue-with-referencing-a-ManagedBean-tf2074677.html#a57154
17
Sent from the MyFaces - Users forum at Nabble.com.
Re: Issue with referencing a ManagedBean
Posted by octoberdan <da...@october5th.net>.
Do you mind posting your managedbean?
--
View this message in context: http://www.nabble.com/Issue-with-referencing-a-ManagedBean-tf2074677.html#a5715417
Sent from the MyFaces - Users forum at Nabble.com.