技术开发 频道

Tapestry入门



<set-property name="clientScriptingEnabled" expression="true"/> </bean> <property-specification name="username" type="java.lang.String"/> <property-specification name="password" type="java.lang.String"/> <component id="inputUsername" type="ValidField"> <message-binding name="displayName" key="username"/> <binding name="validator" expression="beans.requiredValidator"/> <binding name="value" expression="username"/> </component> <component id="inputPassword" type="ValidField"> <message-binding name="displayName" key="password"/> <binding name="validator" expression="beans.requiredValidator"/> <binding name="value" expression="password"/> </component> </page-specification>
    Page-specification元素的class属性和两个property-specification元素与Pig Latin翻译器应用是相似的。

    你会发现第一个新东西-bean元素①,bean元素把一个org.apache.tapestry.valid.ValidationDelegate

    的实例指定了名称"delegate"。页面HTML模板里的Form控件把它的参数delegate设定为
ognl:beans.delegate,就是指向了这个org.apache.tapestry.valid.ValidationDelegate实例。
Bean元素②把一个org.apache.tapestry.valid.StringValidator的实例指定了名称" 
requiredValidator",以用于验证。这个bean的required属性被设为true表明使用这个bean的域是必须被验证的。这个bean的clientScriptingEnabled属性被设定为ture,表明使用这个bean的域客户端的javascript验证功能是激活的。RequiredValidator bean被用于验证inputUsername和inputPassword的内容。

    控件inputUsername③被控件规范声明为ValidField,ValidField是一种用于Tapestry验证子系统的特殊版本的TextField控件。Message-binding元素被用于指定inputUsername控件的displayName参数的值,这个值是用"username"为关键字从login.properties④文件里得到。InputUsername控件的validator参数被设定为requiredValidator bean,这是我们在页面规范里声明过的⑤。控件的value参数跟页面Java类的username属性绑定在一起⑥。控件inputPassword的控件规范跟控件inputUsername几乎相似,除了用于取得displayName的关键字和绑定的页面Java类的属性不同。

    通过使用ValidField控件和为表单(form)提供一个ValidationDelegate, 我们激活了Login表单的验证功能。除了服务器端的验证,Tapestry也提供了客户端的验证(利用javascript)。下面就是当用户提交一个表单而没有为UserName域提供值时,一个javascript错误对话框弹出时的屏幕抓图。
0
相关文章