精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-27
具体步骤如下。 1、用Shell组件包含进dojo,Shell组件会自动配置dojo包。 <html jwcid="@Shell" title="Basic Ajax Page"> <body jwcid="@Body"> <p>Basic javascript inclusion sample.</p> </body> </html> 2、使用updateComponents参数 这个参数已经在很多组件里实现,加上这个参数就可以实现ajax了,例如组件 DirectLink, LinkSubmit, Form, ImageSubmit and Submit,你只要告诉它要 更新哪些部分或者组件就可以了,jwcid="time@Insert"这种取id为time,你也 可以将你需要更新的部分使用Any组件包含起来,例如 <div jwcid="ajax@Any">update me</div>,同样这时的Id为ajax,而且你可以 更新多个,例如updateComponents="time,ajax"。 <html jwcid="@Shell" title="Basic Ajax Page"> <body jwcid="@Body"> <p>Basic javascript inclusion sample.</p> <p><a jwcid="@DirectLink" listener="listener:onRefreshTime" updateComponents="time">Refresh time</a>.</p> <div jwcid="time@Insert" value="ognl:time" renderTag="true" /> </body> </html> 3、普通的Tapestry Page类 public abstract BasicAjax extends BasePage { public abstract void setTime(Date time); public void onRefreshTime() { setTime(new java.util.Date()); } } 没了,已经可以运行了。 修订:修改了listener函数名称,谢谢8楼。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-27
我还是那个疑问,t4.1中,如何在page的render/rewind流程中判断是来自于正常的页面渲染呢,还是某个组件的ajax请求?
还有,如何控制某个ajax响应中的script代码块的执行?有时候默认执行script的行为会造成一些麻烦。 |
|
返回顶楼 | |
发表时间:2007-07-27
除了你定义调用的方法和需要更新的组件中的取值方法,其他不更新组件的取值方法不执行,render/rewind中无法判断是否ajax请求,我觉得没判断的必要呀,你在你自己的方法里执行逻辑,render方法里处理公共的部分就可以了,控制ajax的执行,这个没考虑过,tapestry使用dojo实现的ajax,或许你看其生成的页面源代码,或者重新实现tapestry组件试试。
|
|
返回顶楼 | |
发表时间:2007-07-27
谢谢!
从tapestry 4.0.x升级到4.1.x有什么注意事项么?官方文档中没提到,我不敢贸然升级。 |
|
返回顶楼 | |
发表时间:2007-07-27
文档在这里
http://tapestry.apache.org/tapestry4.1/usersguide/upgrade4.0.html 还不是很全,我升级的时候忘记做记录了,你copy下项目不停的测试改就行,如果没用到tacos,升级还是挺方便的。 |
|
返回顶楼 | |
发表时间:2007-09-09
请问,为什么我的运行起来后,浏览器会有 dojo未定义的错误?
生成的dojo的js路径 在浏览器都无法访问 是tapestry路径生成错误了吗? <script type="text/javascript" src="/assets*/static/dojo-0.4.3/dojo.js"></script> /assets*/static/dojo-0.4.3/dojo.js 浏览器访问不到,其它的也是 |
|
返回顶楼 | |
发表时间:2007-09-09
已经发现是同事Friendly URL 配置错误了
|
|
返回顶楼 | |
发表时间:2007-09-10
可以是可以了,不过为什么点击后是生成一个"层"盖在网页上?内容和原来一样,只是多了个时间
而且层上有个CLOSE链接 用来关闭层. 怎么会是这个样子?有谁可以帮忙解答下吗? 纠正下楼主的错误 Tapestry Page类 里要添加public abstract Date getTime(); --------------------------------------- public void setTime() | { | setTime(new java.util.Date()); | } | --------------------------------------- 这个函数名要换掉,不能和 public abstract void setTime(Date time); 一样 会出错的 |
|
返回顶楼 | |
发表时间:2007-09-10
用你的例子修改了一些,出现以下情况:
原原本本(多了个getTime抽象方法)照你的例子运行,点击directLink没有任何反应... 请问楼主,是哪个地方出了问题? |
|
返回顶楼 | |
发表时间:2007-09-10
第一次尝试的页面类代码:
import java.util.Random; import org.apache.tapestry.html.BasePage; public abstract class Test extends BasePage { public abstract Integer getNum(); public abstract void setNum(Integer num); public void reset(){ Integer num=new Random().nextInt(10000); System.out.println(num); setNum(num); } } html模板 <html jwcid="@Shell" title="test" debugEnabled="true"> <head> </head> <body jwcid="@Body"> <p><a jwcid="@DirectLink" listener="listener:reset" updateComponents="resetNum">Refresh time</a>.</p> <p><span jwcid="resetNum@Insert" value="ognl:num" renderTag="true"></span></p> </body> </html> 谢谢! |
|
返回顶楼 | |