`
wobu20
  • 浏览: 5666 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

tapestry4.1.2使用script问题

阅读更多

由于没有《Enjoying web development with tapestry 4.1》的文档,只能按照4.0里面的内容去测试。

对应书上例子:304页-311页。

Home.html:

xml 代码
  1. <html>  
  2. <body jwcid="@Body">  
  3.   
  4.   
  5. <form jwcid="@Form" action="http://www.foo.com">  
  6.    <input jwcid="deleteButton@Submit" type="submit" value="Delete"/>  
  7.    <span jwcid="insertConfirmScript"/>  
  8. form>  
  9.   
  10. body>  
  11. html>  

Home.page:

xml 代码
  1. <!---->xml version="1.0"?>  
  2.   
  3. <!---->
  4.   "-//Apache Software Foundation//Tapestry Specification 4.0//EN"    
  5.   "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">  
  6.   
  7. <page-specification>  
  8.     <component id="insertConfirmScript" type="Script">  
  9.         <binding name="script" value="literal:Confirm.script"/>  
  10.         <binding name="msg" value="literal:Are you sure?"/>  
  11.         <binding name="button" value="components.deleteButton"/>  
  12.     component>  
  13.        
  14. page-specification>  

Confirm.script:

xml 代码
  1. <!---->xml version="1.0" encoding="gb2312"?>  
  2. <!---->
  3.     "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"   
  4.     "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">  
  5. <script>  
  6. <input-symbol key="msg" required="yes"/>  
  7. <input-symbol key="button" required="yes"/>  
  8. <let key="funcName" unique="yes">getConfirmationlet>  
  9. <body>  
  10. function ${funcName}(){   
  11.       return confirm("${msg}");   
  12.     }   
  13. body>  
  14. <initialization>  
  15.         document.${button.form.name}.${button.name}.onclick=${funcName};   
  16. initialization>  
  17. script>  
  18.   

 

运行后的源码:

 

xml 代码
  1. <html>  
  2.   
  3. <body id="Body">  
  4. <script type="text/javascript"><!---->
  5. function getConfirmation(){   
  6.       return confirm("Are you sure?");   
  7.     }   
  8. // -->script>  
  9.   
  10.   
  11. <form method="post" action="/ConfirmDelete/app" id="Form">  
  12. <div style="display:none;" id="Formhidden"><input type="hidden" name="formids" value="deleteButton" />  
  13. <input type="hidden" name="component" value="$Form" />  
  14. <input type="hidden" name="page" value="Home" />  
  15. <input type="hidden" name="service" value="direct" />  
  16. <input type="hidden" name="submitmode" value="" />  
  17. <input type="hidden" name="submitname" value="" />  
  18. div>  
  19.    <input type="submit" name="deleteButton" id="deleteButton" value="Delete" />  
  20.       
  21. form>  
  22.   
  23. <script type="text/javascript"><!---->
  24. dojo.addOnLoad(function(e) {   
  25. dojo.require("tapestry.form");tapestry.form.registerForm("Form");   
  26. document.Form.deleteButton.onclick=getConfirmation;   
  27. tapestry.form.focusField('deleteButton');});   
  28. // -->script>body>  
  29. html>  

在IE中运行提示script错误:

java 代码
  1. 行:24  
  2. 字符:1  
  3. 代码:0  
  4. 错误:'dojo' 未定义   
  5. 网址:http://localhost:7856/ConfirmDelete/app   

 

和文档中的例子产生的页面代码不一致的地方在于最后几行。

文档中:

xml 代码
  1. <script language="JavaScript" type="text/javascript"><!---->
  2.   
  3. var $Form_events = new FormEventManager(document.$Form);   
  4.   
  5. document.$Form.deleteButton.onclick=getConfirmation;   
  6.   
  7. focus(document.$Form.deleteButton);   
  8.   
  9. // -->script>  

 

中间还有一些差别,先不管了!

运行后,点击按纽没有任何反应。

 

请问各位大大,4.1.2中使用script还需要哪一些配置?(动态绑定组件事件时才会出错,事先传入组件名不会出错!)

知道的请告诉我,再次谢过了!

分享到:
评论
10 楼 allenny 2007-10-16  
a这个书上的章节我也看过了,但是不能解决我的问题:如果我想在script文件中动态循环生成一些javascript代码怎么办?帮助文档上大概是用<foreach>标签,但是这个标签怎么用呢。expression="symbols" key="item" 这样子用不行,请教这个用法。谢谢
9 楼 wobu20 2007-09-10  
呵呵,问题解决了,失误...
谢谢tapestry大哥啦!
8 楼 tapestry 2007-09-10  
你写的javascript只是confirm提交表单,confirm后你没对结果判断呀,判断一下return false,阻止提交表单。
7 楼 wobu20 2007-09-10  
将以上的内容封装成组件(ConfirmButton),确认框弹出来了,又一个问题,不管点确认还是取消,总会使form表单提交...
页面源码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Application: fruit -->
<!-- Page: Home -->
<!-- Generated: Mon Sep 10 16:35:08 CST 2007 -->
<html>
<head>
<meta name="generator" content="Tapestry Application Framework, version 4.1.2" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>Home</title>
<script type="text/javascript">djConfig = {"isDebug":false,"baseRelativePath":"/ConfirmDelete/app?service=asset&path=%2Fdojo-0.4.3%2F","preventBackButtonFix":false,"parseWidgets":false,"locale":"zh-cn"} </script>

 <script type="text/javascript" src="/ConfirmDelete/app?service=asset&path=%2Fdojo-0.4.3%2Fdojo.js"></script><script type="text/javascript" src="/ConfirmDelete/app?service=asset&path=%2Fdojo-0.4.3%2Fdojo2.js"></script>

<script type="text/javascript">
dojo.registerModulePath("tapestry", "/ConfirmDelete/app?service=asset&path=%2Ftapestry%2F");
</script>
<script type="text/javascript" src="/ConfirmDelete/app?service=asset&path=%2Ftapestry%2Fcore.js"></script>
<script type="text/javascript">
dojo.require("tapestry.namespace");
tapestry.requestEncoding='UTF-8';
</script>
</head>

<body id="Body">
<script type="text/javascript"><!--
function getConfirmation(){
	  return confirm("Are you sure?");
	}
// --></script>


<form method="post" action="/ConfirmDelete/app" id="Form">
<div style="display:none;" id="Formhidden"><input type="hidden" name="formids" value="button" />
<input type="hidden" name="component" value="$Form" />
<input type="hidden" name="page" value="Home" />

<input type="hidden" name="service" value="direct" />
<input type="hidden" name="submitmode" value="" />
<input type="hidden" name="submitname" value="" />
</div>
   
   <input type="submit" name="button" id="button" value="Delete" />
   

</form>

Mon Sep 10 16:35:08 CST 2007

<script type="text/javascript"><!--
dojo.addOnLoad(function(e) {
dojo.require("tapestry.form");tapestry.form.registerForm("Form");
dojo.event.connect(dojo.byId('button'),"onclick","getConfirmation");
tapestry.form.focusField('button');});
// --></script></body>
</html>
<!-- Render time: ~ 16 ms -->



使用组件的html模板:
<html jwcid="@Shell" title="Home">
<body jwcid="@Body">


<form jwcid="@Form" listener="listener:onSubmit">
   <input jwcid="deleteButton@ConfirmButton" msg="Are you sure?" type="submit" value="Delete"/>
</form>

<span jwcid="@Insert" value="ognl:time"/>

</body>
</html>



页面类:
package com.ttdev.confirmdelete;

import java.util.Date;

import org.apache.tapestry.html.BasePage;

public abstract class Home extends BasePage{

	public String onSubmit(){
		System.out.println("very ok!");
		setTime(new Date());
		return null;
	}
	
	public abstract Date getTime();
	
	public abstract void setTime(Date date);
	
}


谢谢!
6 楼 wobu20 2007-09-10  
谢谢tapestry大哥,我在html模板中未声明id,这样的话用的是匿名组件吧?那个id是tapestry自动产生的吧?

我将Confirm.script中的:
document.${button.form.name}.${button.name}.onclick=${funcName}; 


换成:
dojo.event.connect(dojo.byId('${button.id}'),"onclick","${funcName}");


后,错误提示没有了,可是点击按钮没有跳出希望看到的消息框,不知道为什么...
5 楼 tapestry 2007-09-10  
试一下
<form jwcid="myForm@Form" name="myForm" action="http://www.foo.com">
也就是说id和name都等于myForm,试一下,纯大写Form即使没有问题,也该避免用它做id。
4 楼 wobu20 2007-09-10  
firefox下提示的错误信息是:
document.Form has no properties http://localhost:7856/ConfirmDelete/app

错误定位的那一行代码为:
document.Form.deleteButton.onclick=getConfirmation;


请问tapestry大哥,这个是什么原因造成的?麻烦您再看一次!
3 楼 tapestry 2007-09-10  
'dojo' 未定义  ,用firefox加firebug看一下什么错误,应该是常见的乱码问题。
2 楼 wobu20 2007-09-09  
原来要在博客中编辑。。。
显示正常了,有知道原因的大哥大姐们,请告诉我一声,谢谢!
1 楼 wobu20 2007-09-08  
显示乱掉了,怎么编辑不了啊。。。

相关推荐

    Tapestry4.1.2 入门-介绍

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

    java Tapestry4.1.2入门说明教程第1/2页

    在开始使用Tapestry 4.1.2之前,首先需要进行必要的环境配置。这包括将Tapestry提供的jar包拷贝到项目的WEB-INF/lib目录下,并确保移除重复的库(如commons-logging.jar、javassist.jar和ognl-2.6.11.jar)。然后,...

    Tapestry5 使用教程

    ### Apache Tapestry5 使用教程详解 #### 一、Apache Tapestry 概述 Apache Tapestry 是一款使用 Java 语言创建 Web 应用程序的面向组件的开发框架。它通过组件化的方法来构建网页,提供了丰富的功能,包括输入...

    tapestry官方中文文档

    它们将帮助初学者理解Tapestry的基本概念、组件使用、事件处理等方面的知识。 总的来说,Tapestry 4是一个强大且灵活的Web开发框架,通过其组件化、声明式编程和事件驱动的特性,能有效提高开发效率,同时保持代码...

    Tapestry简单入门.rar_java Tapestry_tapestry

    本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用。 首先,让我们深入理解Tapestry的核心理念。Tapestry的目标是通过提高开发效率、简化代码结构和增强可维护性来改善Java Web应用的...

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

    3. **错误处理和调试**:Tapestry 3提供了一套强大的错误处理机制,包括详细的错误报告和调试工具,帮助开发者快速定位和解决问题。 **四、使用Tapestry 3的所有jar包** 压缩包中的“tapestry3”包含了运行...

    tapestry学习入门资料

    Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得轻而易举。并且开发的应用很容易...

    tapestry源码 api等

    3. **Tapestry Hibernate**: 这个库提供了与Hibernate ORM框架的集成,允许开发者方便地在Tapestry应用中使用Hibernate进行数据持久化操作。通过源码,我们可以学习如何在Tapestry中配置和使用Hibernate服务。 4. *...

    tapestry教程资料文档合集

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

    Tapestry5使用文档

    ### Tapestry5 使用文档知识点详解 #### 一、项目架构 **Tapestry5 的项目架构** 是理解其工作原理的基础。以下是对架构各部分的详细介绍: 1. **src项目类文件** - `com.xyst.base` 基类文件: - **...

    Maven + Tapestry5.3.8 + Spring4.0.5 + Oracle10g

    1)解决了Tapestry5.3.8中文Bug问题 2)Tapestry 各种核心组件的使用 3)自带验证,自定义验证,验证码的生成 4)Tree组件的使用,Grid的各种使用(修改样式,排序,隔行换色等等),Loop组件的使用 5)集合Spring...

    Tapestry4开发指南

    Tapestry4与Hivemind的结合,虽然在最初可能会引发一些争议,尤其是对于那些习惯于Spring框架的开发者,但深入理解和使用后,你会发现Hivemind在依赖注入(IoC)和控制反转(DI)方面提供了简洁的解决方案。...

    tapestry-bin-5.1.0.5

    8. **tapestry-hibernate-NOTICE.txt, tapestry-hibernate-core-NOTICE.txt, tapestry-ioc-NOTICE.txt**:与对应的LICENSE文件类似,这些NOTICE文件列出了在Tapestry的这些特定模块中使用到的第三方组件和它们的版权...

    tapestry5中文文档

    此外,Tapestry 提供详细的异常报告,有助于快速定位和解决问题。 在Tapestry 5 中,开发者可以通过创建CRUD(创建、读取、更新、删除)功能的应用来了解框架的核心概念。这包括页面导航、依赖注入和资源注入、用户...

    Tapestry通用WEB框架

    10. **错误处理与调试**:Tapestry的错误处理机制可以帮助开发者快速定位问题,提供详细的错误报告和堆栈跟踪。此外,其开发模式下的实时反馈功能让调试变得更加高效。 11. **性能优化**:Tapestry通过缓存策略、...

    tapestry-4.0.zip

    在性能优化方面,Tapestry 4.0 使用了页面缓存和组件缓存策略,减少了服务器的负载,提升了应用的响应速度。此外,它的请求处理机制也进行了优化,使得请求的处理更加高效。 总的来说,Tapestry 4.0 是一个强大且...

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

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

    Tapestry spindle插件下载

    **安装与使用Tapestry Spindle插件** 下载Tapestry Spindle插件后,通常会包含以下文件: 1. `index.html` - 插件的主页面,介绍插件信息和安装指南。 2. `SpindleMasthead.jpg` - 插件的图标或者logo,用于UI展示...

Global site tag (gtag.js) - Google Analytics