JFinal的action是不是无法通过 <jsp:include page="actionUrl" />来使用

流浪的洋葱 发布于 2014/02/26 20:35
阅读 1K+
收藏 0

@JFinal 你好,想跟你请教个问题:JFinal的action是不是无法通过 <jsp:include page="actionUrl" />来使用?

我做一个网页,使用<jsp:include> 把各个部分动态拼接起来,以便于后期改版,改版需求可能非常频繁。

但是在页面上使用了 <jsp:include page="actionUrl" />后,抛出异常

java.io.FileNotFoundException: !/actionUrl

我的环境是windows 8.1,jdk 1.7u51,jetty 9

以下是异常输出:

2014-02-26 20:21:46.177:WARN:oejs.ServletHandler:qtp109917989-32: /test.jsp
java.io.FileNotFoundException: !/t
	at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:471)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:717)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:586)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1112)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:479)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1046)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.Dispatcher.include(Dispatcher.java:169)
	at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:977)
	at org.apache.jsp.test_jsp._jspService(test_jsp.java:53)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:717)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1644)
	at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:171)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1615)
	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:82)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1624)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:568)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1112)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:479)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1046)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
	at org.eclipse.jetty.server.Server.handle(Server.java:459)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:281)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232)
	at org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
	at java.lang.Thread.run(Thread.java:744)



初学者,问题可能比较二,还请见谅

加载中
0
JFinal
JFinal

    jsp 貌似只能 include jsp 或者 html 文件,不能 include action。解决办法就是参考 jfinal_demo_for_jsp 这个demo,将需要重用的页面部分抽出来单做成 jsp 页面,然后 include 这个 jsp,这些 jsp 所需的所有数据在 actoin 或 interceptor 中准备好。

   可以参考下 jfinal_demo中 FreeMarker 的 include 相关用法,避免 include action 是完全可以的,使用 incldue 模板就行

0
糊搞

我想,楼主的想法是能够动态地将其它Action返回的页面嵌入到当前页面中。。。

可以参考我下面的代码:

function loadSubPage(arg1){
if($("#subPageDiv").html() == ""){
    $("#subPageDiv").load("${ctx}/actionUrl/" + arg1);
    }
}


这样,页面可灵活地显示了

流浪的洋葱
流浪的洋葱
这个办法是可以实现,不过和我想要的效果不太一样。 我想要能返回一个整体的html,不依赖js,不异步加载,毕竟文档不大,异步加载会有延迟,体验可能会不太好。 不过还是谢谢你。
0
Vity
Vity
<jsp:include>  是编译阶段引入文件的亲.. 不是运行阶段请求数据的
Vity
Vity
回复 @流浪的洋葱 : 好吧~
流浪的洋葱
流浪的洋葱
你确定?我记得<%@include %>才是编译之前引入的吧,这个相当于文件拼接,类似于模板引擎的拼接;<jsp:include>应该是运行时期请求的,相当于request.getRequestDispatcher(path).include()
返回顶部
顶部