快速业务通道

编写JSR-168 Portlet指南 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
法。这个问题的解决方法是使用客户端脚本中的名称空间方法和顶层变量。<portlet:namespace/>标记将为每个portlet生成一个惟一标识符。第一步是通过taglib directive将标记库包含在JSP中。

<%@taglib uri="http://java.sun.com/portlet" prefix="portlet"%>

脚本中的validate()方法可以对标记加以区分。

<script>function validate<portlet:namespace/>(foo) {if (foo.bar.value=="") {return false;}return true;}</script>

以下是调用带名称空间的JavaScript方法的方式:

<form action="http://www.somesite.org/servlet"method="GET" onsubmit="return validate<portlet:namespace/>(this);"><label for="bar">Text(required): </label><input type="text" name="bar" id="bar"></form>

编写JSR-168 Portlet指南(2)

时间:2007-05-30 dev2dev

4. 确保引用Portlet资源的内联客户端脚本符合规范   客户端脚本常常引用外部资源(如图像、电影和外部页面)来增强用户界面。常见的示例是预先加载图像以使交换图像更有效的JavaScript。以下是一个示例:

<script>function preloadImages(){var menuImage =new Image();menuImage.src = "images/icon.gif";var menuImageDark=new Image();menuImageDark.src = "images/icon.gif";}</script>

客户端脚本中的URL必须根据JSR-168规范进行重写。这些脚本必须在JSP或JSP-168 portlet类中,以便调用重写API的URL。它们不能在单独的JavaScript (.js)文件中。以下是一个包含URL重写的适当名称空间脚本在JSR-168 portlet中看起来的样子:

<script>function <portlet:namespace/>preloadImages(){var menuImage = new Image();menuImage.src = "<%=renderResponse.encodeURL(renderRequest.getContextPath()+ "images/icon.gif")%>";var menuImageDark= new Image();menuImageDark.src = "<%=renderResponse.encodeURL(renderRequest.getContextPath()+ "images/icon_dark.gif") %>";}</script>

5. 总是为portlet响应声明一个内容类型   根据JSR-168规范,“portlet必须使用RenderResponse接口的setContentType方法设置响应的内容类型”。没有显式设置其内容类型的portlet仍然会成功获得编译。但WebLogic Portal不会执行没有设置其内容类型的portlet。确保您的portlet设置了其内容类型。

以下示例演示了一个正确设置其内容类型的portlet:

public class MyPortlet extends GenericPortlet {public void doView(RenderRequest request, RenderResponse response)throws PortletException, IOException {response.setContentType("text/html");PrintWriter writer = response.getWriter();writer.println("I set my content type!");}}

此示例是不正确的,但仍将获得编译:

public class MyPortlet extends GenericPortlet {public void doView(RenderRequest request, RenderResponse response)throws PortletException, IOException {// no content type set!PrintWriter writer = response.getWriter();writer.println("I did NOT set my content type!");}}

编写JSR-168 Portlet指南(3)

时间:2007-05-30 dev2dev

6. 不要从Portlet发送Cookie   根据JSR-168 portlet规范,在HttpServletResponse上调用addCookie()实际上不会设

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号