我正在尝试找出一种方法来渲染或路由到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。
我们将不胜感激。
账单
答案 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&acceptLanguage=en-US&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)
。
这会很好。