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.