﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-liuzheng-文章分类-Tapestry</title><link>http://www.blogjava.net/liuzheng/category/27081.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 06 Nov 2007 17:11:10 GMT</lastBuildDate><pubDate>Tue, 06 Nov 2007 17:11:10 GMT</pubDate><ttl>60</ttl><item><title>Tapestry中页面之间的数据传递方法</title><link>http://www.blogjava.net/liuzheng/articles/158318.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Mon, 05 Nov 2007 09:42:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/158318.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/158318.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/158318.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/158318.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/158318.html</trackback:ping><description><![CDATA[不同于jsp。使用getter，setter方法，在老的页面中setter参数，在新的页面中getter参数<br />
例子：<br />
<br />
public class Home extends BasePage {<br />
private String stockId;<br />
...<br />
public IPage onOk(IRequestCycle cycle) {<br />
int stockValue = stockId.hashCode() % 100;<br />
Result resultPage = (Result) cycle.getPage("Result");<br />
resultPage.setStockValue(stockValue);<br />
return resultPage;<br />
}<br />
}<br />
<br />
<br />
public class Result extends BasePage {<br />
int stockValue;<br />
public int getStockValue() {<br />
return 100stockValue;<br />
}<br />
public void setStockValue(int stockValue) {<br />
this.stockValue = stockValue;<br />
}<br />
}<br />
<br />
<br />
<img src ="http://www.blogjava.net/liuzheng/aggbug/158318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-11-05 17:42 <a href="http://www.blogjava.net/liuzheng/articles/158318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tapestry中页面临时存储变量的方法</title><link>http://www.blogjava.net/liuzheng/articles/158290.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Mon, 05 Nov 2007 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/158290.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/158290.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/158290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/158290.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/158290.html</trackback:ping><description><![CDATA[Tapestry有一种相似于ServletContext的功能，能够在一个session范围或一个web application内存储变量的方法<br />
<br />
方法如下：<br />
@Persist("client")//可以选择是保留在客户端，还是session中<br />
&nbsp;&nbsp; &nbsp;public abstract void&nbsp; setXXX(int XXX);<br />
&nbsp;&nbsp; &nbsp;public abstract int getXXX();<br />
而且这种储存可以在direct link和form 的提交中传递
<img src ="http://www.blogjava.net/liuzheng/aggbug/158290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-11-05 16:44 <a href="http://www.blogjava.net/liuzheng/articles/158290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tapestry中页面池的作用和防止页面池带来的负效应</title><link>http://www.blogjava.net/liuzheng/articles/158278.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Mon, 05 Nov 2007 07:46:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/158278.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/158278.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/158278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/158278.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/158278.html</trackback:ping><description><![CDATA[after using a page object<br />
(e.g., the Result page object), Tapestry will not throw it away. Instead, it will put it into a pool for reuse (see the diagram<br />
below). Later when it needs to use the Result page object again, it will check if the pool has one. If so, just take it out<br />
from the pool and use it. Only when the pool has no such page object, will it create a new page object.<br />
<br />
所以如果在一个新开的浏览器上面，页面上显示的参数不会发生改变，<br />
防止这种情况的发生可以<br />
在page-specification中加入<br />
&lt;property name="XXX"&gt;&nbsp; XXX为页面上的变量<br />
所以对应的页面为抽象的类 abstract，<br />
对应的变量的get，set方法为abstract<br />
<br />
<img src ="http://www.blogjava.net/liuzheng/aggbug/158278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-11-05 15:46 <a href="http://www.blogjava.net/liuzheng/articles/158278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tapestry中防止恶意用户登陆的方法，即保护页面的方法</title><link>http://www.blogjava.net/liuzheng/articles/158213.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Mon, 05 Nov 2007 03:33:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/158213.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/158213.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/158213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/158213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/158213.html</trackback:ping><description><![CDATA[Page的java文件要实现PageValidateListener接口，<br />
完成pageValidate(PageEvent event)方法<br />
注意public void pageValidate(PageEvent event) {<br />
if (!getUserExists()) {<br />
Login login = getLoginPage();<br />
login.setNextPage("Confirm");<br />
throw new PageRedirectException(login);<br />
}<br />
}<br />
注意这里要用PageRedirectException方法，因为As the rendering<br />
has begun, calling activate() will have no<br />
effect. To interrupt the rendering of the<br />
current page and render another page,<br />
you need to throw a<br />
PageRedirectException.<br />
<br />
这里是服务器内部跳转<br />
The URL displayed in the<br />
browser will not be changed<br />
because the redirection<br />
happens inside Tapestry<br />
only.<br />
<br />
<img src ="http://www.blogjava.net/liuzheng/aggbug/158213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-11-05 11:33 <a href="http://www.blogjava.net/liuzheng/articles/158213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有关Tapestry中的persistent property的处理</title><link>http://www.blogjava.net/liuzheng/articles/158195.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Mon, 05 Nov 2007 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/158195.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/158195.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/158195.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/158195.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/158195.html</trackback:ping><description><![CDATA[The problem here is that if you store something into the session, it should be something per-user instead of something<br />
per-page. Clearly the current product id is a per-page thing, not a per-user thing. So using a client persistent property is<br />
a much better choice.<br />
client的方法：<br />
@Persist("client")<br />
session的方法：<br />
@Persist("session")<br />
<br />
<img src ="http://www.blogjava.net/liuzheng/aggbug/158195.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-11-05 10:33 <a href="http://www.blogjava.net/liuzheng/articles/158195.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在tapestry中解决不同的submit的方法</title><link>http://www.blogjava.net/liuzheng/articles/158040.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Sun, 04 Nov 2007 04:02:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/158040.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/158040.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/158040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/158040.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/158040.html</trackback:ping><description><![CDATA[解决方法：针对不同的submit使用不同的监听器<br />
<br />
例如：<br />
&lt;page-sepecification&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;component id="productAcionForm" type="Form"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/component&gt;<br />
&nbsp;&nbsp;&lt;component id="addToCart" type="Submit"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;binding name="action" value=" listener:addToCart"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/component&gt;<br />
&nbsp;&nbsp;&lt;component id="continueShopping" type="Submit"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;binding name="action" value=" listener:continueShopping"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/component&gt;<br />
&lt;/page-sepecification&gt;<br />
<br />
<br />
public class ProductDetails extends BasePage {<br />
public void addToCart() {<br />
//add product to cart<br />
//...<br />
}<br />
public String continueShopping() {<br />
return "Home";<br />
}<br />
} 
<img src ="http://www.blogjava.net/liuzheng/aggbug/158040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-11-04 12:02 <a href="http://www.blogjava.net/liuzheng/articles/158040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>