Jsf Facelet包含servlet生成的内容

Jsf Facelet包含servlet生成的内容,jsf,servlets,facelets,Jsf,Servlets,Facelets,我想使用ui:include在facelet中包含servlet生成的内容。到目前为止,我只收到了一些错误 请注意,servlet工作正常,从浏览器获取请求也可以 请注意,我可以成功地包含来自另一个facelet文件的内容,但不能在servlet生成内容时包含 我在谷歌上搜索了一下,发现我的问题满溢,但找不到匹配的答案 myfacelet.xhtml(位于webapp的根目录下,即通过“http://localhost:8080/mywebapp/myfacelet.xhtml”): 还要注意,

我想使用ui:include在facelet中包含servlet生成的内容。到目前为止,我只收到了一些错误

请注意,servlet工作正常,从浏览器获取请求也可以

请注意,我可以成功地包含来自另一个facelet文件的内容,但不能在servlet生成内容时包含

我在谷歌上搜索了一下,发现我的问题满溢,但找不到匹配的答案

myfacelet.xhtml(位于webapp的根目录下,即通过“http://localhost:8080/mywebapp/myfacelet.xhtml”):

还要注意,servlet永远不会执行

我的代码有什么问题

是否可能包括在内

我怎样才能做到呢

致以最诚挚的问候,
只能包含另一个Facelets文件,而不是JSP/Servlet的输出

您可能需要用一个完整的Facelets文件替换Servlet,或者使用Facelets标记文件或Facelets复合组件,其中HTML也可以使用JSTL标记或
rendered
属性动态生成,如果需要,可以借助支持bean或支持组件

如果由于某种原因,您绝对需要使用servlet,例如,因为您正在从遗留JSP/Servlet到JSF/FACELLET的迁移过程中,并且没有太多的时间来适当地将servlet转换成一个明智的FACELET方法,那么您也可以考虑使用以下组件:



但正如所说,这不是正确的设计方法。为了获得合适的长期解决方案,您应该考虑用Facelets文件/tag/composite替换Servlet。

我也在开发一个应用程序,它必须执行动态页面生成,包括嵌入图像、

这似乎支持巴卢斯克的上述评论, “…使用Facelets标记文件或Facelets复合组件,其中HTML也可以使用JSTL标记或呈现属性动态生成,如有必要,可借助支持bean或支持组件。”


您的里程可能会有所不同

问题发布已经有一段时间了,但是有人可能会发现它很有用,如果我做了什么蠢事,我欢迎你的更正! 我遇到了同样的问题,我通过javascript解决了这个问题,我使用的线索来自这个链接,我的servlet是动态生成一个地图标记的,它是用servlet过滤器(等高线)在(web.xml)文件上设置的,所以我使用上述链接中的javascript在xhtml中应用了这个链接,(注意:rtutil.appUrl返回我的JSF应用程序的上下文路径),我应用它如下:

<div w3-include-html="#{rtutil.appUrl}/contours/map"></div>
        <script type="text/javascript" src="resources/js/rtscript.js"></script>
        <script type="text/javascript">
            includeHTML();
            $(document).ready(function () {
                cityplanmap();
            });
        </script>

includeHTML();
$(文档).ready(函数(){
城市平面图();
});

谢谢您的回答。我可能会提出一个专门的问题来获取适当的设计信息。现在我主要关注“包含servlet生成的内容”问题。:)我找不到有关此“ui:include”限制的技术信息。我甚至发现有消息称这是可能的你有关于限制的来源/解释/规格吗?只需查看标签文档:这是我提到的来源之一。从本文档中,我了解到可以包括任何XHTML文件,而不仅仅是facelets.:'(“此标记可以包括三件事:普通XHTML和包含组合标记或组件标记的XHTML页面。”servlet不在其中。我使用了“ui:include src=”“”。现在它可以工作了,包含被执行了!在“ui:include”中确实有些可疑。我怀疑对于相对(如“bla/bli.XHTML”)或绝对(例如“/bla/bli.xhtml”)URL,JSF检查目标URL是否是现有的facelet(如果不是,则为错误)。另一方面,对于“完整”URL(例如”),它不存在,并且包含就可以工作。您认为如何?敬请。
@WebServlet(name = "DynamicContentServlet", urlPatterns = {"/dynamic-content"})
public class DynamicContentServlet extends HttpServlet {
  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter writer = response.getWriter();
    writer.println("<p>Dynamic stuff</p>");
  }
}
<context-param>
  <param-name>javax.faces.PROJECT_STAGE</param-name>
  <param-value>Development</param-value>
</context-param>
<servlet>
  <servlet-name>FacesServlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>FacesServlet</servlet-name>
  <url-pattern>/faces/*</url-pattern>
  <url-pattern>*.jsf</url-pattern>
  <url-pattern>*.faces</url-pattern>
  <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
javax.faces.view.facelets.TagAttributeException: /myfacelet.xhtml @12,48 <ui:include src="/dynamic-content"> Invalid path : /dynamic-content
at com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:152)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:195)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:774)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
(...)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
at java.lang.Thread.run(Thread.java:662)
java.io.FileNotFoundException
at org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:369)
at com.sun.faces.facelets.impl.DefaultFaceletCache._getLastModified(DefaultFaceletCache.java:172)
at com.sun.faces.facelets.impl.DefaultFaceletCache.access$000(DefaultFaceletCache.java:62)
at com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:82)
at com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:78)
at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:121)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:62)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:256)
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:366)
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346)
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
at com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:147)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:195)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:774)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
(...)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
at java.lang.Thread.run(Thread.java:662)
<o:resourceInclude path="/dynamic-content" />
<div w3-include-html="#{rtutil.appUrl}/contours/map"></div>
        <script type="text/javascript" src="resources/js/rtscript.js"></script>
        <script type="text/javascript">
            includeHTML();
            $(document).ready(function () {
                cityplanmap();
            });
        </script>