壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1494|回复: 0

Liferay研究之十四:子窗口向父窗口的值传递(字典项的实现)

[复制链接]
发表于 2010/6/1 15:06:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
描述:在文档库中,“Add Shortcut”会弹出一个先选择Group,后选择文档的对话框;
实现机制:
document_library\edit_file_shortcut.jsp
<input type="button" value="<liferay-ui:message key="select" />"<%= LiferayWindowState.POP_UP.toString() %>"><portlet:param name="struts_action" value="/document_library/select_group" /></portlet:renderURL>', 'toGroup', 'directories=no,height=640,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,toolbar=no,width=680'); void(''); toGroupWindow.focus();" />
onClick事件中,打开一个窗口,该窗口打开一个renderURL,该URL会执行对应的Action.render方法,find the right forwarding 最终打开select_group.jsp页面。为什么不直接打开select_group.jsp页面呢?这样可以用liferay的方式来进行参数传递,还可以指定窗口的模式;
需要注意的是使用renderURL时,引号的使用方法。一般是:在外围用但引号,里面正常的使用双引号, <portlet:renderURL>中的双引号与html input中的双引号不会冲突,因为系统会将<Portlet:renderURL>解析为对应的http://xxxxxxx字符串。
执行正确的话,上面会打开弹出窗口。
select_xxxx.jsp页面中,查询到一个list之后,会通过:

StringMaker sm = new StringMaker();

sm.append("javascript: opener.");

sm.append(renderResponse.getNamespace());

sm.append("selectGroup('");

sm.append(group.getGroupId());

sm.append("', '");

sm.append(UnicodeFormatter.toString(group.getName()));

sm.append("'); window.close();");

String rowHREF = sm.toString();
来调用父窗口中的selectXxxx JS 代码,向父窗口传递一个id参数,然后将本窗口关闭。
在父窗口(edit_file_shortcut.jsp)中,声明JS function如下:

function <portlet:namespace />selectGroup(groupId, groupName) {

if (document.<portlet:namespace />fm.<portlet:namespace />toGroupId.value != groupId) {

<portlet:namespace />selectFileEntry("", "", "");

}

document.<portlet:namespace />fm.<portlet:namespace />toGroupId.value = groupId;

document.<portlet:namespace />fm.<portlet:namespace />toFolderId.value = "";

document.<portlet:namespace />fm.<portlet:namespace />toName.value = "";

var nameEl = document.getElementById("<portlet:namespace />toGroupName");

nameEl.innerHTML = groupName + "&nbsp;";

document.getElementById("<portlet:namespace />selectToFileEntryButton").disabled = false;

}
这样就完成了子窗口向父窗口的值传递过程。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/smilingleo/archive/2007/12/29/2002170.aspx

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 14:09 , Processed in 0.011330 second(s), 15 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表