﻿<?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-AIRDREAM-随笔分类-Tapestry</title><link>http://www.blogjava.net/airdream/category/13328.html</link><description>JAVA DIARY</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 05:01:57 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 05:01:57 GMT</pubDate><ttl>60</ttl><item><title>Tapestry+Ibatis+Spring  写的Digg网站。效果不错！</title><link>http://www.blogjava.net/airdream/archive/2006/11/14/81100.html</link><dc:creator>AIRDREAM</dc:creator><author>AIRDREAM</author><pubDate>Tue, 14 Nov 2006 04:53:00 GMT</pubDate><guid>http://www.blogjava.net/airdream/archive/2006/11/14/81100.html</guid><wfw:comment>http://www.blogjava.net/airdream/comments/81100.html</wfw:comment><comments>http://www.blogjava.net/airdream/archive/2006/11/14/81100.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/airdream/comments/commentRss/81100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/airdream/services/trackbacks/81100.html</trackback:ping><description><![CDATA[Tapestry + Ibatis + Spring 写的 Digg 类网站。虽然功能不是很全，但基本的digg功能已经全部都实现了，只是没有添加web2.0元素，不过已经是一个不错的digg类中文网站了，界面还可以。大家可以看一看，说不定这个小网站以后会很火的，抢到先机了！<br />站名：酷宝<br />地址：<a href="http://qopo.net">http://qopo.net</a><br /><img src ="http://www.blogjava.net/airdream/aggbug/81100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/airdream/" target="_blank">AIRDREAM</a> 2006-11-14 12:53 <a href="http://www.blogjava.net/airdream/archive/2006/11/14/81100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tapestry 建立自己得 Validator</title><link>http://www.blogjava.net/airdream/archive/2006/07/20/59162.html</link><dc:creator>AIRDREAM</dc:creator><author>AIRDREAM</author><pubDate>Thu, 20 Jul 2006 04:30:00 GMT</pubDate><guid>http://www.blogjava.net/airdream/archive/2006/07/20/59162.html</guid><wfw:comment>http://www.blogjava.net/airdream/comments/59162.html</wfw:comment><comments>http://www.blogjava.net/airdream/archive/2006/07/20/59162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/airdream/comments/commentRss/59162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/airdream/services/trackbacks/59162.html</trackback:ping><description><![CDATA[
		<p>今天介绍一下如何建立自己得Validator<br />1. 建立Validator继承BaseValidator类<br />我实现得是验证用户输入必须和指定字段一致。<br /><strong>如果想要带参数得验证，请添加一个带String参数得构造方法，并实现setter，getter方法<br /></strong>例如validator验证调用名为 name，则实现setName,getName方法。<br />代码： <code><br />package org.appfuse.webapp.tapestry; </code></p>
		<p>import org.apache.tapestry.IMarkupWriter;<br />import org.apache.tapestry.IRequestCycle;<br />import org.apache.tapestry.TapestryUtils;<br />import org.apache.tapestry.form.FormComponentContributorContext;<br />import org.apache.tapestry.form.IFormComponent;<br />import org.apache.tapestry.form.ValidationMessages;<br />import org.apache.tapestry.form.validator.BaseValidator;<br />import org.apache.tapestry.valid.ValidatorException; </p>
		<p>public class MyValidater extends BaseValidator {<br />//用户得输入内容<br /> private String name; </p>
		<p> /**<br />  * @return the name<br />  */<br /> public String getName() {<br />  return name;<br /> } </p>
		<p> /**<br />  * @param name<br />  *            the name to set<br />  */<br /> public void setName(String name) {<br />  this.name = name;<br /> } </p>
		<p> public MyValidater() { </p>
		<p> } </p>
		<p> public MyValidater(String string) {<br />  super(string);<br /> }<br /></p>
		<p>//实现验证方法<br /> public void validate(IFormComponent field, ValidationMessages messages,<br />   Object object) throws ValidatorException {<br />  String str = object.toString();<br />  if (!str.equals(name))<br />   throw new ValidatorException(messages.formatValidationMessage(<br />     getMessage(), "invalid-format", new Object[] {<br />       field.getDisplayName(), null }));<br /> }<br />}<br /><br />2.ok，修改hivemodule.xml 文件，添加以下代码<br /><br />    &lt;contribution configuration-id="tapestry.form.validator.Validators"&gt;<br />       &lt;validator name="name" configurable="true" class="org.appfuse.webapp.tapestry.MyValidater"/&gt;<br />   &lt;/contribution&gt;<br /></p>
		<code>
				<br />
		</code>
		<font color="#ff0000">注意：如果你的validator不带参数，请设置configurable=false<br /></font>3.  ok,可以在page文件中使用了， <code><br /><br />    &lt;component id="usernameField" type="TextField"&gt;<br />        &lt;binding name="value" value="user.username"/&gt;<br />        &lt;binding name="validators" value="validators:required,name=airdream"/&gt;<br />        &lt;binding name="displayName" value="message:user.username"/&gt;<br />    &lt;/component&gt;<br /></code><br />大功告成！输入内容必须为aridream,否则报错！ <img src ="http://www.blogjava.net/airdream/aggbug/59162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/airdream/" target="_blank">AIRDREAM</a> 2006-07-20 12:30 <a href="http://www.blogjava.net/airdream/archive/2006/07/20/59162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tapestry 建立自己的Translator</title><link>http://www.blogjava.net/airdream/archive/2006/07/19/59073.html</link><dc:creator>AIRDREAM</dc:creator><author>AIRDREAM</author><pubDate>Wed, 19 Jul 2006 13:57:00 GMT</pubDate><guid>http://www.blogjava.net/airdream/archive/2006/07/19/59073.html</guid><wfw:comment>http://www.blogjava.net/airdream/comments/59073.html</wfw:comment><comments>http://www.blogjava.net/airdream/archive/2006/07/19/59073.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/airdream/comments/commentRss/59073.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/airdream/services/trackbacks/59073.html</trackback:ping><description><![CDATA[
		<p>Tapestry 自带了3种类型的translator，包括string，date，number，可以验证客户前台的输入，并进行自动类型转换。<br />我们自己也可以定义自己的translator，来实现自己的具体要求。<br />简单举个例子。<br />首先建立一个translator类，继承 org.apache.tapestry.form.translator.AbstractTranslator<br /><br /><strong>package org.appfuse.tapestry.translators;</strong></p>
		<p>
				<strong>
						<font color="#a52a2a">import</font> java.util.Locale; </strong>
		</p>
		<p>
				<code>
						<strong>
								<font color="#a52a2a">import</font> org.apache.tapestry.form.IFormComponent;<br /><font color="#a52a2a">import</font> org.apache.tapestry.form.ValidationMessages;<br /><font color="#a52a2a">import</font> org.apache.tapestry.form.translator.AbstractTranslator;<br /><font color="#a52a2a">import</font> org.apache.tapestry.valid.ValidatorException; </strong>
				</code>
		</p>
		<p>
				<strong>
						<font color="#a52a2a">public class</font> FullToHalfTranslator <font color="#a52a2a">extends</font> AbstractTranslator{<br /></strong>
		</p>
		<p>
				<strong>//这个方法在页面文件render的时候执行。你可以在这里调用自己的方法，来实现需要的转换。在这里JapanEncodeUtil.toHalf方法是我自己定义的一个实现全角文字转化成半角文字的方法，具体代码没必要贴出来了。<br /><br /> <font color="#a52a2a">protected</font> String formatObject(IFormComponent arg0, Locale arg1, Object arg2) {<br />     <font color="#000000">String</font> str = JapanEncodeUtil.toHalf(arg2.toString());<br />     <font color="#a52a2a">return</font> str;<br /> }<br /><br />//这个方法在页面文件submit的时候调用。 </strong>
		</p>
		<p>
				<strong> <font color="#a52a2a">protected</font> Object parseText(IFormComponent field, ValidationMessages message, String text) <font color="#a52a2a">throws</font> ValidatorException {<br />     <font color="#a52a2a">return</font> JapanEncodeUtil.toHalf(text);<br /> } </strong>
		</p>
		<p>
				<strong>} </strong>
				<br />
		</p>ok，就这么简单。接下来，在hivemodule.xml文件中添加下面定义<br /><br /><code><strong><font size="4"> </font>&lt;<font color="#a52a2a">contribution</font><font color="#008000">configuration-id</font>="<font color="#0000ff">tapestry.form.translator.Translators</font>"&gt;<br /> &lt;<font color="#a52a2a">bean</font><font color="#008000">name</font>="<font color="#0000ff">fullToHalf</font>" <font color="#008000">class</font>="<font color="#0000ff">org.appfuse.tapestry.translators.FullToHalfTranslator</font>" /&gt;<br /> &lt;/<font color="#a52a2a">contribution</font>&gt;</strong><br /></code><br />ok，下面就可以在page文件中使用了<br />代码片断：<br /><strong><font color="#a52a2a"> &lt;component</font><font color="#008000">id</font>="<font color="#0000ff">remoteFileDir</font>" <font color="#008000">type</font>="<font color="#0000ff">TextField</font>"&gt;<br />  <font color="#a52a2a">&lt;binding</font><font color="#008000">name</font>="<font color="#0000ff">value</font>" <font color="#008000">value</font>="<font color="#0000ff">backupJobSetting.remoteFileDir</font>"/&gt;<br />        <font color="#a52a2a">&lt;binding</font><font color="#008000">name</font>="<font color="#0000ff">translator</font>" <font color="#008000">value</font>="<font color="#0000ff">translator:fullToHalf</font>"/&gt;<br />        <font color="#a52a2a">&lt;binding</font><font color="#008000">name</font>="<font color="#0000ff">validators</font>" <font color="#008000">value</font>="<font color="#0000ff">validators:required</font>"/&gt;<br />        <font color="#a52a2a">&lt;binding</font><font color="#008000">name</font>="<font color="#0000ff">displayName</font>" <font color="#008000">value</font>="<font color="#0000ff">message:backupJobSetting.remoteFileDir</font>"/&gt;<br /> <font color="#a52a2a">&lt;/component&gt;<br /></font></strong>也可以在html文件中使用，具体不介绍了，和其他用法一样。<br />ok，大功告成！由于我也是刚刚接触tapestry几天，介绍的不详细。有不完整的请大家指教。<img src ="http://www.blogjava.net/airdream/aggbug/59073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/airdream/" target="_blank">AIRDREAM</a> 2006-07-19 21:57 <a href="http://www.blogjava.net/airdream/archive/2006/07/19/59073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>