<%
ResourceURL url = ResourceURL.createResourceURL(request, response);
url.setScheme("http");
url.setDomain("my.domain.com");
url.setPort(8001);
url.setPathPrefix("/static");
url.setTemplate("my-resource-template");
url.setPath("/images/my.jpg");
%>
此片断使用 my-resource-template 创建到图像的链接。执行时 , 该 JSP 生成以下代码 :

提示 : 确保正在使用的 URL 模板具有与 setter 方法相对应的标志。如果没有 , WebLogic Portal 将忽略到 setter 的调用。
注意 , 模板必须存在于 my-resource-template 文件中 , 此片断才能生效。模板还必须具有一个指定的 url:prefix 标志 , setPathPrefix() 方法将替换 该标志。 在 com.bea.portlet.GenericURL 或其子类的位置 , 您可以使用在呈现标记库中可用的 URL 标记创建 URL 来代替。例如 , 可以使用 renderUrl JSP 标记来重写上述 JSP 片断 :
<%@ taglib uri="render.tld" prefix="render" %>
scheme="http" domain="my.domain.com"
pathPrefix="/static" path="/images/my.jpg"/> "/>
注意 , 所有的框架主干 JSP 均使用呈现标记创建到窗口模式 / 状态按钮的链接、到页面的链接 , 等等。
在Portlet中使用URL模板
使用 Page Flow 和 Struts 标记在 Page Flow 和 Struts portlet 中创建表单、链接等时 , 这些 JSP 标记通过 URL 重写程序将 URL 创建委派给 WebLogic Portal 。这些 URL 重写程序使用 jpf-url-templates 指定的 URL 模板创建 URL 。
WebLogic Portal 中的 portlet 容器使用类似的方法处理 Java portlet 。创建 javax.portlet.PortletURL 时, portlet 容器使用在 url-templates-config.xml 文件中指定的 java-portlet-url-templates 。下面是一个示例:
<%
PortletURL actionURL = renderResponse.createActionURL();
PortletURL renderURL = renderResponse.createRenderURL();
%>
WebLogic Portal 将分别使用 “ 操作 ” 和 “ 资源 ” 类型的 URL 模板生成这两个 URL 的字符串值。
远程Portlet中的URL
当您使用WSRP消费远程portlet时,确保远程portlet返回的标记引用门户至关重要(WSRP Consumer)。使用远程portlet时,Consumer充当最终用户和WSRP Producer上部署的portlet的中间件。一般情况下,Producer可能设置安全性策略,限制最终用户对部署在Producer上的资源的访问权限。所以,未使用WebLogic Portal创建的链接在远程portlet上可能失败。
WSRP 1.0规范为URL创建指定了两种方法:“producer writing”和“consumer rewriting”。下面简要介绍一下这两种方法。
Producer Writing
此方法包括以下步骤:
Consumer 将一组 URL 模板发送给 Producer 。这些 URL 模板在结构上类似于上面讨论的模板 , 不同的是它们包含由 WSRP 1.0 规范指定的标记。
Producer 使用这些 URL 模板创建 URL , 并向 Consumer 返回标记。
如果需要 , Consumer 可以进一步处理 URL 以便 URL 引用 Consumer 。
在这三个步骤中 , 只有第三步依赖于 WSRP Consumer 的实现方式。如果 WebLogic Portal 就是 Consumer , 则 Producer 的 URL 的编写包括以下步骤 :
WebLogic Portal 使用一组用于远程 portlet 的 URL 模板。这些模板连同其他 URL 模板一起在 url-templates-config.xml 文件中声明。门户 Web 应用程序的 WEB-INF 目录中的 wsrp-producer-registry.xml 文件指定了必须用于远程 portlet 的 URL 模板的名称。注意这些模板中出现的额外标志。例如, wsrp-default 模板具有类似 {wsrp-interactionState} 、 {wsrp-navigationalState} 和 {wsrp-mode} 的标志。 WSRP 1.0 规范描述这些标志的意义。
[8]
