`

Tapestry组件运用总结(Form内组件)(转)

阅读更多
Tapestry组件运用总结(Form内组件)

tapestry 2008-11-10 14:26:40 阅读43 评论0   字号:大中小 订阅
Tapestry组件运用总结(Form内组件)
2008年10月29日 星期三 15:09
A) Insert 组件
e.g.
   
 <input type="text" jwcid="name@Insert" value="ognl:user.name"/>

     页面表现时,将会到页面类中寻找getUser().getName()方法获取初值并输出
     相当于在页面上显示数据.

B) TextField 组件
e.g.
    
<input type="text" jwcid="username@TextField" value="ognl:username"/>

     页面表现时,将会到页面类中寻找getUsername()方法获取初值
     *如果是修改信息页面,通常初始值要在页面表现之前由setUsername()手动设置从数据库中读取出来的值
     表单提交时,通过setUsername()写入新值(即用户输入值),在类中通过getUsername()获取新值
     相当于在修改个人信息时,首先读出用户名赋予文本框(用户名)初值,用户修改时填入新值,后台获取之
     *Hidden属性区分是普通文本输入框(默认false)和密码输入框(hidden="ognl:true")
     readonly属性设置只读 readonly="true"为只读(后台可读取)
     *disabled属性设置是否可写 diabled="true"为不可写(后台也不可读取)

C) TextArea 组件
e.g.
    
<textarea jwcid="content@TextArea" value="ognl:content" cols="40" rows="10"></textarea>

     页面表现时,将会到页面类中寻找getContent()方法获取初值
     工作原理同TextField

D) RadioGroup/Radio 组件
e.g.
    
<span jwcid="headImage@RadioGroup" selected="ognl:headImage">
       <input jwcid="@Radio" type="radio" value="1"/>头像1
       <input jwcid="@Radio" type="radio" value="2"/>头像2
       <input jwcid="@Radio" type="radio" value="3"/>头像3
       <input jwcid="@Radio" type="radio" value="4"/>头像4
       <input jwcid="@Radio" type="radio" value="5"/>头像5
       <input jwcid="@Radio" type="radio" value="6"/>头像6
     </span>

     RadioGroup为每一个Radio提供一个唯一的ID。RadioGroup跟踪当前被选中的属性值,并且只有一个Radio能够被选中.
     页面提交时,RadioGroup组件就利用OGNL表达式向headImage字段写入被选中的Radio组件的value参数值.
     页面表现时(修改页面),将会到页面类中寻找getHeadImage()方法获取初值,然后寻找@Radio组件中与其相同的组件并勾选上.

E) PropertySelection 组件
     使用PropertySelection组件必须要构造一个类来实现IPropertySelectionModel接口,并且重写该接口的5个方法.
     public int getOptionCount() //提供下拉菜单的长度
     public Object getOption(int index) //提供select标签的option
     public String getLabel(int index) //提供select标签的Label值,也就是下拉菜单显示的内容
     public String getValue(int index) //提供select标签的value值
     public Object translateValue(String value) //selected后的返回值,value值未必就是我们需要的返回值,可以在这个方法里面对返回的value做对应的转换或修改.
e.g.1. 性别下拉框
    
<select jwcid="gender@ProPertySelection" name="genderSelect" value="ognl:gender" model="supportedGender">
       <option selected>先生</option>
       <option>女士</option>
     </select>

Java代码 复制代码

  
 GenderSelectionModel.java   
    public class GenderSelectionModel implements IPropertySelectionModel {   
      
        public static final String male = "先生";   
      
        public static final String female = "女士";   
      
        public static final String[] genderOptions = { male, female };   
      
        public int getOptionCount() {   
            return genderOptions.length;   
         }   
      
        public Object getOption(int index) {   
            return this.translateValue(genderOptions[index]);   
         }   
      
        public String getLabel(int index) {   
            return genderOptions[index].toString();   
         }   
      
        public String getValue(int index) {   
            return genderOptions[index];   
         }   
      
        public Object translateValue(String value) {   
            if (value.equals("先生")) {   
                return "1";   
             } else {   
                return "0";   
             }   
         }   
    }  


Java代码 复制代码

  
 ModUserInfo.java   
    public IPropertySelectionModel getSupportedGender() {   
        return new GenderSelectionModel();   
    }  




     存入数据库中"1"代表先生,"0"代表女士,通过translateValue(String value)方法转换
     页面表现时,通过model属性给出的IPropertySelectionModel获取下拉选项,即getSupportedGender().
     然后通过getGender()方法获取初值,比如获取"0",则在页面显示时寻找value值为"0"的选项即为"女士",并选择之作为初始选择项.


e.g.2. 日志类型下拉框
     <select jwcid="logType@PropertySelection" name="typeSelect" value="ognl:logType" model="supportedType">
       <option>心情日记</option>
       <option>情感天地</option>
       <option>生活感触</option>
     </select>
Java代码 复制代码

  
 TypeSelectionModel.java   
    public class TypeSelectionModel implements IPropertySelectionModel {   
           
        private List typeList = new ArrayList();   
      
        public TypeSelectionModel(List typeList) {   
            this.typeList = typeList;   
         }   
      
        public int getOptionCount() {   
            return typeList.size();   
         }   
      
        public Object getOption(int index) {   
            return ((LogType)typeList.get(index)).getValue();   
         }   
      
        public String getLabel(int index) {   
            return ((LogType) typeList.get(index)).getName();   
         }   
      
        public String getValue(int index) {   
            return ((LogType) typeList.get(index)).getValue();   
         }   
      
        public Object translateValue(String value) {   
            return value;   
         }   
    }  



Java代码 复制代码

  
 ModLog.java   
    public IPropertySelectionModel getSupportedType() {   
         TypeSelectionModel typeSelectionModel =   
                               new TypeSelectionModel(loadType(getUser().getUserId()));   
        return typeSelectionModel;   
    }   
      
    private List loadType(int userid) {   
         ...//从数据库载入该用户的日志类型列表   
    }  



     页面表现时,通过model属性给出的IPropertySelectionModel获取下拉选项,即getSupportedType().
     然后通过value属性给出的初始值即,getLogType()方法获取初值,比如获取"2",则在页面显示时寻找value值为"2"的选项即为"生活感触",并选择之作为初始选择项.


F) Form组件
e.g.
     <form jwcid="logForm@Form">
       ...
     </form>

     Form的监听(listener)方法可以有两种方式:
       1. 在Form组件中声明.
        
<form jwcid="logForm@Form" listener="ognl:listener:onLogin">

           ...
         </form>
       2. 在submit类型组件中声明.
         <input type="submit" jwcid="onLogin@Submit" listener="listener:onLogin" value="发表"/>或者
         <span jwcid="@ImageSubmit" image="..." listener="listener:onLogin"><img src="..." width="" height=""/></span>
       前一种方式当Form中只要有submit就会触发监听方法,后一种方式是Form中有多个submit,各自实现不同的监听方法.

G) Foreach 组件
e.g.
    
<span jwcid="@Foreach" source="ognl:logList" value="ognl:item">

     循环组件,遍历source参数,在表现其内容前更新value参数,将Foreach组件所包含的内容重复表现,其中可以通过value参数获取所需显示内容.
     本例中,页面表现时通过getLogList()方法获取日志列表,循环取出其中数据更新item(日志对象)并予以显示.其中item需要在页面规范(.page)文件中声明:
     <property name="item"/>
     *class参数用来寻找类似CSS的文件对Foreach进行修饰.
     Foreach组件: class="ognl:beans.evenOdd.next"
     Page文件:    <bean name="evenOdd" class="org.apache.tapestry.bean.EvenOdd"/>
     CSS文件:     tr.odd{background-color: #ffffff;}tr.even{background-color: #eeeeee;}

H) Conditional 组件
e.g.
    
<span jwcid="@Conditional" condition='ognl:item.sex.equals("1")'>先生</span>
     <span jwcid="@Conditional" condition='ognl:item.sex.equals("0")'>女士</span>

     conditional参数为true时运行Conditional组件中的HTML模板内容.
     在Tapestry4.0以后就不支持该组件了, 可以使用其他组件来实现:
    1. Contrib:Choose和Contrib:When
   
 <library id="contrib" specification-path="classpath:/org/apache/tapestry/contrib /Contrib.library"/>(.application文件中引入Contrib类包)
     <span jwcid="@contrib:Choose">
       <span jwcid="@contrib:When" condition='ognl:user.gender.equals("1")'>先生</span>
       <span jwcid="@contrib:When" condition='ognl:user.gender.equals("0")'>女士</span>
     </span>

    2. If组件
    <span jwcid="@If" condition='ognl:item.sex.equals("1")'>先生</span>
     <span jwcid="@If" condition='ognl:item.sex.equals("0")'>女士</span>
分享到:
评论

相关推荐

    tapestry组件

    tapestry部分组件绑定参数的列表!

    Tapestry的组件及功能

    介绍Tapestry组件的使用和功能。内容还行,使用初学者入门。

    tapestry5 自定义组件

    自定义的邮件组件!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    tapestry4.02中封装ext的GridPanel组件

    tapestry4.02中封装ext的GridPanel组件

    tapestry页面编辑组件

    tapestry页面编辑组件,可以实现文本框,单选框,多选框和下拉框等的自动生成,并返回改变后的数据。

    tapestry hibernate Spring应用及组件的使用

    tapestry hibernate Spring应用及组件的使用的一个简单完整例子,包含form组件、table组件的一个增删改查。其中数据库创建用户和表在docs里,数据库使用oracle

    tapestry 5.1.0.5 官方组件文档 天涯浪子

    来自:http://tapestry.apache.org/tapestry5.1/tapestry-core/ref

    Tapestry简单入门.rar_java Tapestry_tapestry

    Tapestry简单入门介绍,包含Tapestry入门、tapestry组件介绍

    深入浅出Tapestry4一书源代码(2)

    Tapestry4 Tapestry4 深入浅出Tapestry4深入浅出Tapestry4深入浅出Tapestry4

    关于Tapestry的一些个人总结

    Tapestry简述: Tapestry是一个servle的扩展,它运行于servlet容器(Tomcat)或包含servlet容器的服务器(如Jboss) 通过使用Tapestry,开发者完全不需要使用JSP技术,用户只需要使用Tapestry提供的模板技术即可, ...

    tapestry技术

    Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带有jwcid属性的html标记。其中jwc的意思是Java Web Component。Tapestry使得java代码与html...

    Tapestry开发指南

    Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带有jwcid属性的html标记。其中jwc的意思是Java Web Component。Tapestry使得java代码与html...

    tapestry4.02中封装ext的TabPanel组件

    tapestry4.02中封装ext的TabPanel组件

    tapestry5中文文档

    tapestry5组件说明使用及登陆修改等简单实例

    Maven + Tapestry5.3.8 + Spring4.0.5 + Oracle10g

    2)Tapestry 各种核心组件的使用 3)自带验证,自定义验证,验证码的生成 4)Tree组件的使用,Grid的各种使用(修改样式,排序,隔行换色等等),Loop组件的使用 5)集合Spring4.0.5实现的增删改查 等等 如果你是新...

    tapestry教程资料文档合集

    Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...

    Tapestry5最新中文入门实例教程

    本文介绍Tapestry框架版本5。本文利用Tapestry 5开发一个简单的具有创建/读/更新/删除功能的应用,在创建这个应用的过程中,本文体会到Tapestry...还将了解如何应用Tapestry中内嵌的Ajax功能来创建支持Ajax的组件。

    Tapestry4.1.2 入门-介绍

    不必关心链接!不必关心请求(http request)到了哪里!...Tapestry构建于底层的request-resonse模式,基于Servlet技术,抽象出面向组件开发的模型。Tapestry关心的是:页面、组件、事件、对象、方法、属性!

    tapestry 实例

    tapestry 实例tapestry 实例tapestry 实例tapestry 实例

    深入浅出Tapestry

    资源名称:深入浅出Tapestry内容简介:本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在...

Global site tag (gtag.js) - Google Analytics