Oracle WebCenter 中的 WSRP Portlet:未加载从 CSS 文件引用的图像
如果 WSRP portlet 显示的 jsp 页面引用了引用图像的 css 文件,则无法加载该图像,因为无法找到 css 中的 url。 css 中的 url 是相对的:../images/image.gif。
我的问题的详细信息
我开发了一个 JSR168 portlet(Java Portlet 标准),我想将其部署在 Oracle WebCenter 11g(以及其他符合 JSR 的门户服务器中)
我的 portlet 显示一个引用 css 的 jsp文件和此 css 引用了一些图像。所有这些资源(图像、CSS、jsps 等)都包含在我的 portlet 的 war 文件中。
当我在 WebCenter 页面中加载 portlet 时,css 文件已正确加载,但该 css 文件引用的图像却未正确加载。
原因是为了生成 css,WebCenter 生成了一个长 url: http://本地主机:8888/webcenter/resourceproxy/~.portletId~3D~252Foracle~252Fadf~252Fportlet~252FscopedMD~252Fs8bba98ff_4cbb_40b8_beee_296c916a23ed~252Fportlets~252Fclients3_366e85fa_e823_48ac_ b37a_9890375111ab~26clientId...(它的方式更长)
但是在这个css文件中,有相对的图像的路径。当浏览器尝试加载它们时,网址为: http://localhost:8888/webcenter/resourceproxy/img/sprite.png 这是不存在的。
我该怎么做才能使 WebCenter 正确加载我的 css 文件中的图像?
如何将我的 portlet 部署到 Oracle WebCenter 我解释一下,以防我应该采取不同的做法。
我通过执行将我的 portlet 转换为 WSRP portlet java -jar wsrp-predeploy.jar 源 EAR 目标 EAR 如 http://download.oracle 中所述.com/docs/cd/E12839_01/webcenter.1111/e12405/wcadm_portlet_prod.htm#CHDECJHI)
我使用 WebLogic 控制台将其部署到 WebLogic。
我使用 Enterprise Manager 11g Fusion MiddleWare Control 注册 Portlet Producer。
我将 portlet 添加到 WebCenter Spaces 的主页
我的环境
WebCenter Suite (11.1.1.2.0) + WebLogic 服务器 (10.3.2) SO:Windows XP SP3
提前感谢您的宝贵时间。
If a WSRP portlet displays a jsp page that references a css file which references an image, the image can't be loaded because the url in the css can't be found.
The url in the css is a relative one: ../images/image.gif.
Details of my problem
I have developed a JSR168 portlet (Java Portlet Standard) and I want to deploy it in Oracle WebCenter 11g (among other JSR-complaint portal servers)
My portlet displays a jsp which references a css file and this css references a few images. All these resources (images, css, jsps, etc) are contained into the war file of my portlet.
When I load the portlet in a WebCenter page, the css file is loaded correctly, but the images referenced by this css file don't.
The reason is that to generate the css, WebCenter generates a long url:
http://localhost:8888/webcenter/resourceproxy/~.portletId~3D~252Foracle~252Fadf~252Fportlet~252FscopedMD~252Fs8bba98ff_4cbb_40b8_beee_296c916a23ed~252Fportlets~252Fclients3_366e85fa_e823_48ac_b37a_9890375111ab~26clientId... (its way longer)
But inside this css file, there are relative paths to the images. And when the browser tries to load them, the url is:
http://localhost:8888/webcenter/resourceproxy/img/sprite.png
which doesn't exist.
What can I do to make WebCenter load the images in my css files correctly?
How do I deploy my portlet into Oracle WebCenter
I explain this, in case I should do it differently.
I convert my portlet into to a WSRP portlet by executing
java -jar wsrp-predeploy.jar source EAR target EAR
as explained in http://download.oracle.com/docs/cd/E12839_01/webcenter.1111/e12405/wcadm_portlet_prod.htm#CHDECJHI)I deploy it into WebLogic with the WebLogic Console.
I register a Portlet Producer using the Enterprise Manager 11g Fusion MiddleWare Control.
I add the portlet to the main page of the WebCenter Spaces
My Environment
WebCenter Suite (11.1.1.2.0) + WebLogic Server (10.3.2)
S.O: Windows XP SP3
Thanks in advance for your time.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我有类似的问题。好吧,这不会给你一个解决方案,但会解释你为什么......
我认为有人在编写规范时犯了错误。
I have similar issue. Well, this will not give you a solution, but will explain you why...
I think somebody had made mistake when writing the spec.
不要使用像 ../../css/ 这样的相对路径,而是使用 <%=request.getContextPath()%>/css/,在 CSS 中你仍然可以保留图像的相对路径 ../。 ./图像/。
Do not use the relative path like ../../css/ instead use <%=request.getContextPath()%>/css/, within your CSS you can still keep the relative path of your images ../../images/.
我认为您可以配置应用程序服务器以通过引擎推送 CSS 文件,就像处理 JSP 一样。在这种情况下,您应该能够编译这些标签。
I think you can configure the application server to push CSS files through the engine the same way you do JSPs. In this case you should be able to have those tags compiled.