Oracle WebCenter 中的 WSRP Portlet:未加载从 CSS 文件引用的图像

发布于 2024-08-18 04:39:39 字数 1983 浏览 8 评论 0原文

如果 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 我解释一下,以防我应该采取不同的做法。

我的环境

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.

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

说好的呢 2024-08-25 04:39:39

我有类似的问题。好吧,这不会给你一个解决方案,但会解释你为什么......

聚合页面的目标之一是该页面所包含的 Portlet 具有共同的外观和感觉 [A500]。这不仅会影响 Portlet 周围的装饰,还会影响其内容。对所有 Portlet 使用通用的 CSS 样式表,并定义一组标准样式,可以提供这种通用的外观,而不需要 Portlet 生成特定于消费者的标记。 Portlet 应该使用本规范中的 CSS 样式定义,以便参与不同消费者对其内容的统一显示。对于支持 CSS 样式表的标记类型,消费者必须向最终用户代理提供 CSS 样式表,其中包含本规范 [第 9.5 节] 中定义的类的定义。

我认为有人在编写规范时犯了错误。

I have similar issue. Well, this will not give you a solution, but will explain you why...

One of the goals of an aggregated page is a common look-and-feel across the Portlets contained on that page [A500]. This not only affects the decorations around the Portlets, but also their content. Using a common CSS style sheet for all Portlets, and defining a set of standard styles, provides this common look-and-feel without requiring the Portlets to generate Consumer-specific markup. Portlets SHOULD use the CSS style definitions from this specification in order to participate in a uniform display of their content by various Consumers. For markup types that support CSS stylesheets, Consumers MUST supply a CSS stylesheet to the End-User's agent with definitions for the classes defined in [Section 9.5] of this specification.

I think somebody had made mistake when writing the spec.

英雄似剑 2024-08-25 04:39:39

不要使用像 ../../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/.

暮凉 2024-08-25 04:39:39

我认为您可以配置应用程序服务器以通过引擎推送 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文