2007-09-08
tapestry4.1.2使用script问题
关键字: tapestry4由于没有《Enjoying web development with tapestry 4.1》的文档,只能按照4.0里面的内容去测试。
对应书上例子:304页-311页。
Home.html:
xml 代码
- <html>
- <body jwcid="@Body">
- <form jwcid="@Form" action="http://www.foo.com">
- <input jwcid="deleteButton@Submit" type="submit" value="Delete"/>
- <span jwcid="insertConfirmScript"/>
- form>
- body>
- html>
Home.page:
xml 代码
- xml version="1.0"?>
- "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
- "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
- <page-specification>
- <component id="insertConfirmScript" type="Script">
- <binding name="script" value="literal:Confirm.script"/>
- <binding name="msg" value="literal:Are you sure?"/>
- <binding name="button" value="components.deleteButton"/>
- component>
- page-specification>
Confirm.script:
xml 代码
- xml version="1.0" encoding="gb2312"?>
- "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
- "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
- <script>
- <input-symbol key="msg" required="yes"/>
- <input-symbol key="button" required="yes"/>
- <let key="funcName" unique="yes">getConfirmationlet>
- <body>
- function ${funcName}(){
- return confirm("${msg}");
- }
- body>
- <initialization>
- document.${button.form.name}.${button.name}.onclick=${funcName};
- initialization>
- script>
运行后的源码:
xml 代码
- <html>
- <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="deleteButton" />
- <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="deleteButton" id="deleteButton" value="Delete" />
- form>
- <script type="text/javascript">
- dojo.addOnLoad(function(e) {
- dojo.require("tapestry.form");tapestry.form.registerForm("Form");
- document.Form.deleteButton.onclick=getConfirmation;
- tapestry.form.focusField('deleteButton');});
- // -->script>body>
- html>
在IE中运行提示script错误:
java 代码
- 行:24
- 字符:1
- 代码:0
- 错误:'dojo' 未定义
- 网址:http://localhost:7856/ConfirmDelete/app
和文档中的例子产生的页面代码不一致的地方在于最后几行。
文档中:
xml 代码
- <script language="JavaScript" type="text/javascript">
- var $Form_events = new FormEventManager(document.$Form);
- document.$Form.deleteButton.onclick=getConfirmation;
- focus(document.$Form.deleteButton);
- // -->script>
中间还有一些差别,先不管了!
运行后,点击按纽没有任何反应。
请问各位大大,4.1.2中使用script还需要哪一些配置?(动态绑定组件事件时才会出错,事先传入组件名不会出错!)
知道的请告诉我,再次谢过了!
评论
allenny
2007-10-16
a这个书上的章节我也看过了,但是不能解决我的问题:如果我想在script文件中动态循环生成一些javascript代码怎么办?帮助文档上大概是用<foreach>标签,但是这个标签怎么用呢。expression="symbols" key="item" 这样子用不行,请教这个用法。谢谢
wobu20
2007-09-10
呵呵,问题解决了,失误...
谢谢tapestry大哥啦!
谢谢tapestry大哥啦!
tapestry
2007-09-10
你写的javascript只是confirm提交表单,confirm后你没对结果判断呀,判断一下return false,阻止提交表单。
wobu20
2007-09-10
将以上的内容封装成组件(ConfirmButton),确认框弹出来了,又一个问题,不管点确认还是取消,总会使form表单提交...
页面源码如下:
使用组件的html模板:
页面类:
谢谢!
页面源码如下:
<!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);
}
谢谢!
wobu20
2007-09-10
谢谢tapestry大哥,我在html模板中未声明id,这样的话用的是匿名组件吧?那个id是tapestry自动产生的吧?
我将Confirm.script中的:
换成:
后,错误提示没有了,可是点击按钮没有跳出希望看到的消息框,不知道为什么...
我将Confirm.script中的:
document.${button.form.name}.${button.name}.onclick=${funcName};
换成:
dojo.event.connect(dojo.byId('${button.id}'),"onclick","${funcName}");
后,错误提示没有了,可是点击按钮没有跳出希望看到的消息框,不知道为什么...
tapestry
2007-09-10
试一下
<form jwcid="myForm@Form" name="myForm" action="http://www.foo.com">
也就是说id和name都等于myForm,试一下,纯大写Form即使没有问题,也该避免用它做id。
<form jwcid="myForm@Form" name="myForm" action="http://www.foo.com">
也就是说id和name都等于myForm,试一下,纯大写Form即使没有问题,也该避免用它做id。
wobu20
2007-09-10
firefox下提示的错误信息是:
错误定位的那一行代码为:
请问tapestry大哥,这个是什么原因造成的?麻烦您再看一次!
document.Form has no properties http://localhost:7856/ConfirmDelete/app
错误定位的那一行代码为:
document.Form.deleteButton.onclick=getConfirmation;
请问tapestry大哥,这个是什么原因造成的?麻烦您再看一次!
tapestry
2007-09-10
'dojo' 未定义 ,用firefox加firebug看一下什么错误,应该是常见的乱码问题。
wobu20
2007-09-09
原来要在博客中编辑。。。
显示正常了,有知道原因的大哥大姐们,请告诉我一声,谢谢!
显示正常了,有知道原因的大哥大姐们,请告诉我一声,谢谢!
wobu20
2007-09-08
显示乱掉了,怎么编辑不了啊。。。
发表评论
- 浏览: 2133 次

- 详细资料
搜索本博客
我的相册
未命名
共 1 张
共 1 张
最近加入圈子
最新评论
-
T4.1.2局部刷新、校验代理 ...
public void onSubmit(){ // if ...
-- by lean1252 -
tapestry4.1.2使用script ...
a这个书上的章节我也看过了,但是不能解决我的问题:如果我想在script文件中动 ...
-- by allenny -
tapestry4.1.2使用script ...
呵呵,问题解决了,失误... 谢谢tapestry大哥啦!
-- by wobu20 -
tapestry4.1.2使用script ...
你写的javascript只是confirm提交表单,confirm后你没对结果 ...
-- by tapestry -
tapestry4.1.2使用script ...
将以上的内容封装成组件(ConfirmButton),确认框弹出来了,又一个问题 ...
-- by wobu20






评论排行榜