博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(Portal 开发读书笔记) <namespace>
阅读量:5931 次
发布时间:2019-06-19

本文共 1810 字,大约阅读时间需要 6 分钟。

<portlet:namespace>标记的作用:

 <namespace>标记的作用是为当前Portlet中的javascript函数,html元素以及js中的全局变量设定一个名字空间,并且这个名字空间最终会被某个字母-数字组成的字符串所替代,来防止当一个页面上组装了多个Portlet时候出现的名字冲突问题。

例如:

 
  1. <script type='text/javascript'> 
  2. var <portlet:namespace/>someVar = 10
  3. function <portlet:namespace/>confirmSave() { 
  4. return confirm("Do you want to save Book information?"); 
  5. </script> 

这样在某页面上就定义了一段只属于该页面所在Portlet的javascript代码。方法很简单,在全局变量以及javascript函数前面加上<portlet:namespace/>标记就可以,这样,最后当这个portlet被merge到portal页面时候,somevar变量和confirmSave()方法就是唯一的,就算其他的portlet也定义了这个名字的变量和方法也不会有冲突。而且,就算一个页面上引用了某个Portlet的多个实例,也不会冲突。

页面上使用这些全局变量和js函数也必须给出<namespace>标记

 
  1. <a href="<portlet:actionURL name="save"/>" 
  2. onclick="javascript: return <portlet:namespace/>confirmRemove()">Save</a> 

----

使用误区:

这种加上<namespace>的标记只可以用在Portlet页面上直接书写js的情况,如果某个Portlet页面用外部资源引入的形式引进某个外部的javascript文件,比如:

 
  1. <script type="text/javascript" src="folder1/folder2/search/searchGadget.js"></script> 

 这种情况下,在外部的js中无需要<namespace>标记,因为名字空间问题会自动被jsp引擎所处理成内联的形式。

----

 在表单中使用<namespace>

为了让Portlet所包含的html里面的表单元素在portal页面唯一,同样也要给表单以及表单里面的元素加上<namespace>前缀:

 
  1. <form name="<portlet:namespace/>addBookForm"> 
  2. <tr> 
  3. <td> 
  4. <input type="text" name="<portlet:namespace/>bookTitle"/> 
  5. </td> 
  6. <td> 
  7. <div id="<portlet:namespace/>bookErrorMessage"></div> 
  8. </td> 
  9. </tr> 
  10. ... 
  11. </form> 

这时候,假如在最终merge的portal页面上有多个同样的输入框为book的元素,那么取得这个表单(我们想要的Portlet)中的输入值呢?

方法是在Portlet处理代码中,也要给每个这个元素名加上名字空间前缀 (Liferay的处理方法)

 
  1. @ProcessAction(name = "addBookAction"
  2. public void addBook(ActionRequest request, ActionResponse response) 
  3. throws PortletException, IOException { 
  4. //这里我们可以看到用response.getNamespace()则自动加上了名字空间,于是这个名字空间和表单元素名拼接起来的字符串就是在Portal页面上唯一并且只属于当前Portlet的了
  5. String bookTitle = 
  6. request.getParameter(response.getNamespace() + "bookTitle"); 
  7. ... 

 

本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/844898,如需转载请自行联系原作者
你可能感兴趣的文章
linux下chart中汉字不显示或缺失的解决
查看>>
0基础学习大数据你需要了解的学习路线和方向
查看>>
数据转json格式不转义中文
查看>>
APP推广方式众多 如何推广才能带来更多用户下载量?
查看>>
阿里云产品总监何云飞:数据是企业的第一资产,云与企业必须深度融合
查看>>
为什么越来越少人用Jquery
查看>>
作为一名Android开发者,你有过迷茫吗
查看>>
Java编码易疏忽的十个问题
查看>>
小程序对企业、商家有哪些方面的好处?
查看>>
SpringBoot 2.1.1.RELEASE集成devtools
查看>>
6款大神级PPT辅助工具,帮你轻松完成PPT制作
查看>>
AngularJS权威教程高清版pdf下载
查看>>
Java 面试官最喜欢问的关键字 volatile
查看>>
专业机械论文怎么发表
查看>>
VMware企业级虚拟化平台搭建
查看>>
Mac版杀毒软件Virus Scanner Plus好用吗?
查看>>
概括VB.NET Access数据库连接
查看>>
Cocos2d-x3.0游戏实例之《别救我》第三篇——循环滚动背景(下)
查看>>
CSS常用英文字体介绍
查看>>
ubuntu下ansible安装使用
查看>>