播放框架:如何使用静态js和CSS渲染静态HTML页面?

时间:2018-11-26 06:03:55

标签: html css playframework

我正在尝试找出一种方法来渲染或路由到Play的公共文件夹中托管的某些静态网络应用。我的项目结构如下:

myapp
  + app
  + conf
  + modules
  + public
      |   + webapp1
      |        + css
      |        + images
      |        + index.html
      |   + webapp2
      |        + css
      |        + images
      |        + index.html
  + ...

我想渲染webapp1和webapp2。每个Web应用程序中的index.html将使用每个Web应用程序的css文件夹中的css文件。

我尝试使用这种路由,并在控制器中使用重定向来呈现静态html页面:

Redirect("/webapp1/").withCookies(Cookie("token", "")).bakeCookies()
Redirect("/webapp2/").withCookies(Cookie("token", "")).bakeCookies()
GET  /webapp1/  controllers.Assets.at(path="/public/webapp1", file="index.html")
GET  /webapp1/*file   controllers.Assets.at(path="/public/webapp1", file)
GET  /webapp2/  controllers.Assets.at(path="/public/webapp2", file="index.html")
GET  /webapp2/*file   controllers.Assets.at(path="/public/webapp2", file)

index.html将被正确路由和呈现。但是,文件夹中的css和图像未正确加载。 index.html使用相对路径加载它们。然后,以某种方式将css和映像加载到顶级文件,例如localhost / css / css1,而不是localhost / webapp1 / css / css1。

我们将不胜感激。

账单

2 个答案:

答案 0 :(得分:0)

尝试对负载CSS和JavaScript使用以下路由。

对于加载CSS:

> <?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.6+"
> codebase="http://x.x.x.x:oooo/forms/java">    <information> 
>       <title>Oracle Forms Builder App test with Java Web Start</title>
>       <vendor>AL-AMIN</vendor>        <description>Create for
> Test</description>    </information>  <security>      <all-permissions/> 
>   </security>     <resources>         <j2se version="1.6+"/>      <jar
> href="frmall.jar"/>       < jar href="clientinfos.jar"/>      <!-- jar
> href="jacob.jar"/ -->         <!-- jar href="frmwebutil.jar"/ -->
>   </resources>
> 
>   <applet-desc name="Java Web Start Test"
> main-class="oracle.forms.engine.Main" width="1" height="1">       <param
> name="serverURL"
> value="/forms/lservlet?ifcfs=/forms/frmservlet?ifsessid=WLS_FORMS.formsapp.999&#38;acceptLanguage=en-US&#38;config=bannerDev"/>
>       <param name="serverArgs"
> value="\\x.x.x.x\pblibsw\System\Forms\CPIBS_LOADING_RAC.fmx"/>    
>       <param name="width" value=100% />       <param name="height" value=100%
> />        <param name="lookAndFeel" value="Oracle"/>      <param
> name="colorScheme" value="blue"/>    
>           <param name="serverApp" value="default">
>           <param name="logo" value="">        <param name="imageBase" value="codebase">       <param name="recordFileName" value="">      <param
> name="heartBeat" value="">        <param name="MaxEventWait" value="">
>       <param name="allowAlertClipboard" value="true">         <param
> name="clientDPI" value="">        <param name="applet_stop_timeout"
> value="800">      <param name="guiMode" value="0">    </applet-desc>  
> </jnlp>

对于加载Java脚本:

/css/*file controllers.Assets.at(path="/public/css", file)

答案 1 :(得分:0)

对于面临类似情况的任何人,从Play获得多个Web应用程序的最佳方法是在静态资源的相对路径中添加路径。

例如,在webapp1的index.html中,而不是将CSS加载为<link href="/static/css/hash.chunk.css" rel="stylesheet">,而将CSS加载为<link href="/webapp1/static/css/hash.chunk.css" rel="stylesheet">

然后在“播放路线”文件中,您可以进行如下配置 GET /webapp1/*file controllers.Assets.at(path="/public/webapp1_folder", file)

这会很好。