but now the index.html content delivered to the browser, contains references to these .css entities from "classpath",
which appear to be resolved directly by Lift using the "toserve" package hierarchy:
http://stackoverflow.com/questions/12573783/scala-lift-reading-a-file-from-resources-toserve
/friendu_xweb_ml/classpath/blueprint/screen.css -- getResource - found resource: bundle://18.0:0/toserve/blueprint/screen.css
/friendu_xweb_ml/classpath/blueprint/blueprint.css
href="/friendu_xweb_ml/classpath/blueprint/plugins/fancy-type/screen.css"
and these .js files:
src="/friendu_xweb_ml/classpath/jquery.js" - found resource: bundle://18.0:0/toserve/jquery-1.3.2.js
src="/friendu_xweb_ml/classpath/json.js" - Resource found as url [bundle://18.0:0/toserve/json2-min.js]
src="/friendu_xweb_ml/images/ajax-loader.gif" "script" src="/friendu_xweb_ml/ajax_request/liftAjax.js" type="text/javascript"
The files Lift is accessing can be seen by activating the following log level for PAX-WEb, which shows what PAXWeb ServletContext objects (e.g. org.ops4j.pax.web.service.jetty.internal.HttpServiceContext, org.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext, ) are doing as they attempt to resolve resources requested by LiftWeb. http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getResource(java.lang.String) These lookups pass through: net/liftweb/http/provider/servlet/HTTPServletContext.getResource() That class is a wrapper for http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getResource(java.lang.String) as shown by this decl: class HTTPServletContext(val ctx: ServletContext) extends HTTPContext ... (see: https://github.com/lift/framework/blob/master/web/webkit/src/main/scala/net/liftweb/http/provider/servlet/HTTPServletContext.scala) ...and is generally invoked from LiftRules.getResource http://stackoverflow.com/questions/7546887/how-to-read-a-file-from-a-lift-webapp http://stackoverflow.com/questions/12573783/scala-lift-reading-a-file-from-resources-toserve https://www.assembla.com/wiki/show/liftweb/Properties http://www.eltimn.com/blog/002-javascript-apps-with-lift-best-practices https://www.assembla.com/spaces/liftweb/wiki/When_the_container_handles_requests_before_Lift http://scala-programming-language.1934581.n4.nabble.com/Liftajax-js-added-to-pop-up-dialogs-td1976218.html https://github.com/lift/lift/blob/master/framework/lift-base/lift-webkit/src/main/scala/net/liftweb/http/LiftServlet.scala toReturn() calls https://github.com/lift/framework/tree/master/web/webkit/src/main/scala/net/liftweb/http/js Default: /** * Returns the Ajax script as a JavaScript response */ @volatile var serveAjaxScript: (LiftSession, Req) => Box[LiftResponse] = (liftSession, requestState) => { val modTime = ajaxScriptUpdateTime(liftSession) requestState.testFor304(modTime) or Full(JavaScriptResponse(renderAjaxScript(liftSession), List("Last-Modified" -> toInternetDate(modTime), "Expires" -> toInternetDate(modTime + 10.minutes)), Nil, 200)) } /** * Returns the JavaScript that manages Ajax requests. */ @volatile var renderAjaxScript: LiftSession => JsCmd = session => ScriptRenderer.ajaxScript https://groups.google.com/forum/#!topic/liftweb/Je7yX6R76LQ //Provide own implementation of liftajax.js LiftRules.renderAjaxScript = (session : LiftSession) => MyScriptRenderer.ajaxScript https://github.com/dhobi/liftajax/blob/master/src/main/scala/bootstrap/liftweb/Boot.scala /** * Returns the Ajax script as a JavaScript response */ @volatile var serveAjaxScript: (LiftSession, Req) => Box[LiftResponse] = (liftSession, requestState) => { val modTime = ajaxScriptUpdateTime(liftSession) requestState.testFor304(modTime) or Full(JavaScriptResponse(renderAjaxScript(liftSession), List("Last-Modified" -> toInternetDate(modTime), "Expires" -> toInternetDate(modTime + 10.minutes)), Nil, 200)) } https://groups.google.com/forum/#!topic/liftweb/6ZdwukjWdtQ " I've moved the JavaScript for Comet and Ajax to separately loaded JS files rather than putting them on the page. LiftRules.autoIncludeComet allows you to determine if the Comet stuff will be automatically included LiftRules.autoIncludeAjax allows you to determine if the Ajax stuff will be auto-included LiftRules.renderCometScript and LiftRules.renderAjaxScript render the contents of the Script files LiftRules.renderCometPageContents renders the page-specific stuff for Comet (the GUIDs and versions) LiftRules.ajaxScriptUpdateTime and LiftRules.cometScriptUpdateTime are used to calculate if a new script is needed or if you can return a 304 Using the above features, one can use all, some, or none of Lift's Ajax and Comet stuff. "log4j.logger.org.ops4j=ALL