`
SilverRing
  • 浏览: 72697 次
社区版块
存档分类
最新评论

[Tapestry 4.1.1] Popup child window

阅读更多
I thought it's supposed to be pretty easy before I tried to implement.

The requirement is like this: when a link on the parent window is clicked, a child window pops up and after a series of processes, a child window value will be returned to the parent window.

Since the child window involves pretty much server side access, pure javascript won't suffice.

First of all, here's how I build the link to the child window:

html:

<a jwcid="@Any" href="#" onclick='ognl:getPopupLink()'>
  Find
</a>


java:

public String getExternalURI(Object params) {
	    
    IEngineService service =
        getEngine().getInfrastructure()
            .getServiceMap().getService(Tapestry.EXTERNAL_SERVICE);
		
    ILink uri = service.getLink(true, params);
    return uri.getURL();
}

public String getPopupLink() {
		
    return "openPopup('" + 
        getExternalURI(new ExternalServiceParameter(
            _newPageName))
        + "')";
}


Here's how 'openPopup' defines:

function openPopup(uri) {
  childWindow=open(uri,'popupFinder',
    'resizable=yes,width=400,height=600');
  if (childWindow.opener == null) childWindow.opener = self;
}


I need to provide a function in the parent window to update the field when the child window is done:

function updateFieldFromChild(value) {
  document.getElementById('fieldId').value = value;
}


Here's how to invoke the parent window method to pass the value:

function updateParent(value) {
  window.opener.updateFieldFromChild(value);
  window.close();
  return false;
}
分享到:
评论
2 楼 SilverRing 2009-05-28  
If a parameter need to be appended dynamically, the param name should be "sp"

function openPopup(uri, param) {
  childWindow=open(uri+'&sp=s'+ param,'popupFinder',
    'resizable=yes,width=400,height=600');
  if (childWindow.opener == null) childWindow.opener = self;
}


"s" stands for string here. It's a special use in Tapestry. If multiple params are required, all names are the same: "sp".
1 楼 SilverRing 2008-01-18  
Forgot to mention, the invoked page need to implement the IExternalPageinterface and therefore activateExternalPage method

public abstract class ChildPage extends BasePage
        implements IExternalPage{

    public void activateExternalPage(Object[] parameters,
        IRequestCycle cycle) {		
	
        System.out.println("I'm invoked!");
    }
}

相关推荐

    Tapestry4.1.2 入门-介绍

    【Tapestry4.1.2 入门-介绍】 Tapestry 是一个基于Java的Web应用程序框架,它提供了一种面向组件的开发方式,极大地简化了Web应用的构建过程。在Tapestry中,开发者无需关注HTTP请求的处理细节,如链接、请求流向和...

    tapestry官方中文文档

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...

    Tapestry简单入门.rar_java Tapestry_tapestry

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型来构建动态、数据驱动的Web应用。本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用...

    tapestry教程资料文档合集

    Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...

    tapestry学习入门资料

    "tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...

    tapestry3开发指南,带tapestry3所有jar包

    **Tapestry 3 开发指南** Tapestry 3 是一个开源的Java Web应用程序框架,它在20世纪90年代末至21世纪初非常流行,由Apache软件基金会维护。这个框架提供了组件化、事件驱动和声明式编程模型,帮助开发者构建动态、...

    tapestry源码 api等

    Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它强调组件化、模块化和松耦合的开发方式,使得开发人员可以构建出高效、可维护的Web应用。以下是对Tapestry源码、API及相关库的详细解读: 1....

    Tapestry4开发指南

    ### Tapestry4开发指南 #### 一、Tapestry4概览 Tapestry4作为一款先进的Web应用框架,由Howard Lewis Ship所创造,旨在提供一种更为高效、灵活的Web应用构建方式。与前代Tapestry3相比,Tapestry4在设计上有了...

    tapestry5以上的帮助事例,帮助文档与spring衔接文档

    Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...

    tapestry5中文文档

    Apache Tapestry 5 是一个基于Java的Web应用开发框架,其设计目的是为了简化Web应用程序的构建,提供组件化的页面构建、输入验证、本地化、状态管理和URL映射等功能。Tapestry 5 强调易用性,不仅对终端用户友好,...

    tapestry5.2.6 jar包

    Tapestry 5.2.6 是一个成熟的Java Web开发框架,它提供了一种高效、模块化和可扩展的方式来构建动态、数据驱动的Web应用程序。这个框架的核心理念是将用户界面与业务逻辑分离,通过组件化的思想实现页面的构建,从而...

    Tapestry通用WEB框架

    Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它旨在提高开发效率,提供高度模块化和可重用的组件,以及优秀的错误处理和调试能力。在深入探讨Tapestry的知识点之前,让我们先了解一下这个...

    tapestry-bin-5.1.0.5

    【标题】"tapestry-bin-5.1.0.5" 指的是Apache Tapestry的一个特定版本的二进制发行包。Tapestry是一个开源的Java Web应用程序框架,它提供了一种基于组件的开发方式,用于构建动态、交互式的Web应用。 【描述】...

    Tapestry 5 電子書

    《Tapestry 5 電子書》是关于Java Web开发框架Tapestry 5的一本详尽指南,由Packt Publishing在2007年出版。这本书旨在帮助开发者深入理解和掌握Tapestry 5的各个方面,从而利用其强大功能构建高效、可维护的Web应用...

    Tapestry5.0.16_API文档

    Tapestry5.0.16文档和大家一起学习

    tapestry-4.0.zip

    Tapestry 是一个开源的Java Web应用程序框架,由Apache软件基金会维护。这个“tapestry-4.0.zip”压缩包包含了Tapestry框架的4.0版本,这是一个相对较早的但非常稳定的基础,对于初学者来说是个很好的学习起点。在...

    Tapestry spindle插件下载

    **Tapestry Spindle插件详解** Tapestry Spindle是一款专门为MyEclipse集成环境设计的插件,它使得在MyEclipse 10.7这样的版本中能够方便地开发和调试Apache Tapestry应用程序。Tapestry是一个强大的Java Web框架,...

    Tapestry API

    **Tapestry API 深度解析** Tapestry,作为一个强大的MVC(Model-View-Controller)结合模板技术的Web开发框架,为Java开发者提供了一种高效且灵活的构建Web应用程序的方式。它通过组件化的设计,使得代码更加模块...

    tapestry 实例

    **Tapestry 实例详解** Tapestry 是一个开源的Java Web 应用程序框架,由Apache软件基金会维护。它采用组件化的方式构建Web应用,提供了丰富的功能和强大的性能优化,使得开发人员能够更加专注于业务逻辑,而不是...

Global site tag (gtag.js) - Google Analytics