Ik heb nog niet heel veel ervaring met JSF, maar loop nu tegen een in mijn ogen simpel probleem op waar ik maar geen oplossing voor vind:
Ik heb een soort template jsp pagina, vanwaaruit, afhankelijk van bepaalde instellingen, een aantal pages zouden (bij voorkeur compile-time, maar runtime moet ook wel lukken als ik me wat meer in facelets ga verdiepen) moeten worden geinclude.
De pagina die moet worden geinclude moet uit een backing bean komen. Ik krijg het echter niet voor elkaar om die geparsed te krijgen. De volgende situatie werkt wel:
maar deze constructies werken allemaal niet:
De meldingen die ik met deze pogingen krijg komen allemaal neer op het niet hebben geparsed van de EL.
de includeBean ziet er zo uit:
---------------------------------
Ik vond al deze guide van BalusC, die eigenlijk precies beschrijft waar ik mee bezig ben, maar 'het niet doet'.
geeft
Ik maak gebruik van een OC4J server, Tenzij deze ergens iets geks doet wat ik gemist heb, gebruik ik een vers gedownloade sun reference implementatie van jsf 1.1 met jsp 2.0
Ik vind de stacktrace bij bovenstaande foutmelding wel wat vreemd; ik weet zo niet waar de com.evermind.* classes vandaan komen (onderdeel van OC4J?), maar ik vind hierop geen vergelijkbare problemen.
Ik heb nog lichte verdenkingen ten opzichte van de gebruikte implementatie, maar dat zou er niet voor moeten zorgen dat opeens de hele expression language niet meer werkt voor een include. Wie weet waar ik nog naar kan kijken?
Ik heb een soort template jsp pagina, vanwaaruit, afhankelijk van bepaalde instellingen, een aantal pages zouden (bij voorkeur compile-time, maar runtime moet ook wel lukken als ik me wat meer in facelets ga verdiepen) moeten worden geinclude.
De pagina die moet worden geinclude moet uit een backing bean komen. Ik krijg het echter niet voor elkaar om die geparsed te krijgen. De volgende situatie werkt wel:
Java:
1
| <%@include file="/WEB-INF/component/content.jsp" %> |
maar deze constructies werken allemaal niet:
Java:
1
2
3
4
5
6
7
| <%@include file="${includeBean.contentURL}" %> <jsp:include page="${includeBean.contentURL}" /> <c:import url="${includeBean.contentURL}" /> <jsp:include file="<%=includeBean.contentURL%>" /> <%@include file="#{includeBean.contentURL}" %> <jsp:include page="#{includeBean.contentURL}" /> <c:import url="#{includeBean.contentURL}" /> |
De meldingen die ik met deze pogingen krijg komen allemaal neer op het niet hebben geparsed van de EL.
de includeBean ziet er zo uit:
Java:
1
2
3
4
5
6
| public class includeBean { String contentURL = "/WEB-INF/component/content.jsp"; [..] //getters en setters weggelaten } |
---------------------------------
Ik vond al deze guide van BalusC, die eigenlijk precies beschrijft waar ik mee bezig ben, maar 'het niet doet'.
Java:
1
| <jsp:include page="${includeBean.contentURL}" /> |
geeft
Java:
1
| java.lang.IllegalArgumentException: Resource /${includeBean.includePage} not found |
Ik maak gebruik van een OC4J server, Tenzij deze ergens iets geks doet wat ik gemist heb, gebruik ik een vers gedownloade sun reference implementatie van jsf 1.1 met jsp 2.0
Ik vind de stacktrace bij bovenstaande foutmelding wel wat vreemd; ik weet zo niet waar de com.evermind.* classes vandaan komen (onderdeel van OC4J?), maar ik vind hierop geen vergelijkbare problemen.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| java.lang.IllegalArgumentException: Resource /${includeBean.includePage} not found at com.evermind.server.http.EvermindPageContext.include(EvermindPageContext.java:443) at _minimalMap._jspService(_minimalMap.java:161) at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59) at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:462) at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:594) at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:518) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370) at com.evermind.server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:259) at com.evermind.server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher.java:51) at com.evermind.server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:193) at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:284) at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:198) at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152) at oracle.adfinternal.view.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:157) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:214) at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64) at com.esri.adf.web.util.ADFFilter.doFilter(Unknown Source) at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15) at com.esri.adf.web.util.ADFSessionTimeoutFilter.doFilter(Unknown Source) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:621) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453) at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:234) at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:29) at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:879) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:298) at java.lang.Thread.run(Thread.java:595) |
Ik heb nog lichte verdenkingen ten opzichte van de gebruikte implementatie, maar dat zou er niet voor moeten zorgen dat opeens de hele expression language niet meer werkt voor een include. Wie weet waar ik nog naar kan kijken?
Localhost is where the heart is