当我尝试读取 JSF 页面中的属性文件时,我从服务器收到 HTTP 500 错误。虽然从类文件中读取 Bundle 是有效的。
下面是我的示例 webapp 的结构,它是 Tomcat 中的一个 osgi 包。清单文件中的类路径是 web/WEB-INF/classes。所以资源包已经存在于类路径中
Sample
META-INF ---> MANIFEST.MF
web
App
home.jsp
login.jsp
index.html
WEB-INF
web.xml
faces-config.xml
classes-->myresource.properties
lib------>packaged jar
下面是我的 home.jsp 文件的内容,该文件位于 Sample/web/App 目录中。
<f:loadBundle var="bundle" basename="com.obj.colours" />
<f:loadBundle var="addonpages" basename="CustomAddonPages" />
.
.
<h:outputText value='#{brandingBundle["label.ManagementConsole"]}' />
<!-- <a href="../CustomReport.faces">Custom Reporting </a> -->
<!-- below part gives error and i have to use the above hard
coded way using anchor tag-->
<h:commandLink action="#{addonpages.Redirectpage}">
<h:outputText value="Custom Reporting"/>
</h:commandLink>
属性文件包含一行
Redirectpage=../CustomReport.faces
服务器的错误如下
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.RuntimeException: javax.servlet.ServletException: #{addonpages.Redirectpage}: javax.faces.el.MethodNotFoundException: Redirectpage
com.businessobjects.http.servlet.internal.BundlePathAwareServiceHandler.serviceHelper(BundlePathAwareServiceHandler.java:254)
com.businessobjects.http.servlet.internal.BundlePathAwareServiceHandler.service(BundlePathAwareServiceHandler.java:197)
com.businessobjects.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:220)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.businessobjects.pinger.TimeoutManagerFilter.doFilter(TimeoutManagerFilter.java:159)
root cause
javax.servlet.ServletException: #{addonpages.Redirectpage}: javax.faces.el.MethodNotFoundException: Redirectpage
javax.faces.webapp.FacesServlet.service(FacesServlet.java:225)
com.businessobjects.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:110)
com.businessobjects.http.servlet.internal.ServletLastFilterChainElement.service(ServletLastFilterChainElement.java:30)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:46)
com.businessobjects.webutil.boetrustguard.BOETrustValidateFilter.doFilter(BOETrustValidateFilter.java:45)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.webutil.internal.filters.BrowserRenderingModeFilter.doFilter(BrowserRenderingModeFilter.java:20)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.webutil.boetrustguard.BOETrustPrepareFilter.doFilter(BOETrustPrepareFilter.java:32)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.swd.shared.tracelog.TraceLogScopeFilter.doFilter(TraceLogScopeFilter.java:38)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.swd.appcontext.RequestInitFilter.doFilter(RequestInitFilter.java:26)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.http.servlet.internal.BundlePathAwareServiceHandler.serviceHelper(BundlePathAwareServiceHandler.java:235)
com.businessobjects.http.servlet.internal.BundlePathAwareServiceHandler.service(BundlePathAwareServiceHandler.java:197)
com.businessobjects.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:220)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.businessobjects.pinger.TimeoutManagerFilter.doFilter(TimeoutManagerFilter.java:159)
root cause
javax.faces.FacesException: #{addonpages.Redirectpage}: javax.faces.el.MethodNotFoundException: Redirectpage
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:94)
javax.faces.component.UICommand.broadcast(UICommand.java:332)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:287)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:401)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:95)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
com.businessobjects.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:110)
com.businessobjects.http.servlet.internal.ServletLastFilterChainElement.service(ServletLastFilterChainElement.java:30)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:46)
com.businessobjects.webutil.boetrustguard.BOETrustValidateFilter.doFilter(BOETrustValidateFilter.java:45)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.webutil.internal.filters.BrowserRenderingModeFilter.doFilter(BrowserRenderingModeFilter.java:20)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.webutil.boetrustguard.BOETrustPrepareFilter.doFilter(BOETrustPrepareFilter.java:32)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.swd.shared.tracelog.TraceLogScopeFilter.doFilter(TraceLogScopeFilter.java:38)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.swd.appcontext.RequestInitFilter.doFilter(RequestInitFilter.java:26)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.http.servlet.internal.BundlePathAwareServiceHandler.serviceHelper(BundlePathAwareServiceHandler.java:235)
com.businessobjects.http.servlet.internal.BundlePathAwareServiceHandler.service(BundlePathAwareServiceHandler.java:197)
com.businessobjects.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:220)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.businessobjects.pinger.TimeoutManagerFilter.doFilter(TimeoutManagerFilter.java:159)
root cause
javax.faces.el.MethodNotFoundException: Redirectpage
com.sun.faces.el.MethodBindingImpl.method(MethodBindingImpl.java:219)
com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:144)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:92)
javax.faces.component.UICommand.broadcast(UICommand.java:332)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:287)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:401)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:95)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
com.businessobjects.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:110)
com.businessobjects.http.servlet.internal.ServletLastFilterChainElement.service(ServletLastFilterChainElement.java:30)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:46)
com.businessobjects.webutil.boetrustguard.BOETrustValidateFilter.doFilter(BOETrustValidateFilter.java:45)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.webutil.internal.filters.BrowserRenderingModeFilter.doFilter(BrowserRenderingModeFilter.java:20)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.webutil.boetrustguard.BOETrustPrepareFilter.doFilter(BOETrustPrepareFilter.java:32)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.swd.shared.tracelog.TraceLogScopeFilter.doFilter(TraceLogScopeFilter.java:38)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.swd.appcontext.RequestInitFilter.doFilter(RequestInitFilter.java:26)
com.businessobjects.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:72)
com.businessobjects.http.servlet.internal.filter.FilterChainImpl.doFilter(FilterChainImpl.java:43)
com.businessobjects.http.servlet.internal.BundlePathAwareServiceHandler.serviceHelper(BundlePathAwareServiceHandler.java:235)
com.businessobjects.http.servlet.internal.BundlePathAwareServiceHandler.service(BundlePathAwareServiceHandler.java:197)
com.businessobjects.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:220)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.businessobjects.pinger.TimeoutManagerFilter.doFilter(TimeoutManagerFilter.java:159)