- 浏览: 63415 次
- 性别:
- 来自: 四川
最新评论
转自:http://tapestry.apache.org/enum-parameter-recipe.html
It's not uncommon to create a component that has a bit of complex behavior that you want to be able to easily control, and an enumerated type (a Java enum) seems like the right approach.
Our example comes from Tapestry's Select component, which has a blankOption parameter that an enum type.
Let's start with the enum type itself:
public enum BlankOption
{
/**
* Always include the blank option, even if the underlying property is required.
*/
ALWAYS,
/**
* Never include the blank option, even if the underlying property is optional.
*/
NEVER,
/**
* The default: include the blank option if the underlying property is optional.
*/
AUTO;
}
Next, we define the parameter:
The final piece of the puzzle is to inform Tapestry how to convert from a string, such as "never", to a BlankOption value.
public static void contributeTypeCoercer(Configuration<CoercionTuple> configuration)
{
. . .
add(configuration, BlankOption.class);
. . .
}
private static <T extends Enum> void add(Configuration<CoercionTuple> configuration, Class<T> enumType)
{
configuration.add(CoercionTuple.create(String.class, enumType, StringToEnumCoercion.create(enumType)));
}
The TypeCoercer service is ultimately responsible for converting the string to a BlankOption, but we have to tell it how, by contributing an appropriate CoercionTuple. The CoercionTuple identifies the source and target types (String and BlankOption), and an object to perform the coercion (an instance of StringToEnumCoercion, via the create() static method).
发表评论
-
struts2 中获取 web资源的方式
2016-01-08 17:02 533在struts2中获取 web资源的方式大致可分为获取扩展 ... -
sql server、db2、oracle 存储过程动态sql语句示例
2015-01-31 19:00 1839Oracle CREATE OR REPLACE PRO ... -
ie9 中出现不明的异常(参数是必选项 (Argument not optional)、尚未实现)等
2015-01-27 23:57 1311<script type="text/jav ... -
SAXParseException: The content of element type "configuration" must match
2014-09-15 23:57 1967在mybatis的配置文件中新增加<databaseI ... -
java.lang.ClassNotFoundException: Cannot find class: DB_VENDOR
2014-09-15 23:45 2007在mybatis 中使用databaseIdProvide ... -
spring mvc3 + fastjson 转换 REST 参数以及输出
2014-03-27 00:16 4253spring 3可以支持Rest风格参数,其内置了jack ... -
eclipse中编辑log4j 的xml配置文件时,自动提示
2014-03-27 00:05 894方法1. 配置log4j.dtd文件: Windows - ... -
java json 转换之 Jackson 框架
2013-08-01 21:50 1169转自:http://www.cnblogs.com/hooj ... -
eclipse/myeclise 自定义注释中的变量名称
2013-07-01 23:18 972eclipse/myeclipse中自带了 ... -
Eclipse Class Decompiler——Java反编译插件
2012-11-08 22:41 1241Eclipse Class Decompiler,整 ... -
struts+spring+hibernate整合问题解决方法 陆续更新中....
2009-01-01 10:33 882在整合ssh过程中出现的问题和解决方法: 一、 严重: Ser ... -
DWR通过Annotation与spring整合
2009-01-21 22:05 668DWR 2.0 增加了一个很有趣的新特性,Annotat ... -
div嵌套页面 div加载页面 (其中获取目标页面的内容是用dwr框架连接java程序做的)
2009-03-15 16:58 658前段时间因为有需要,要在div中加载一个页面。但是以前没做过, ... -
tapestry autocomplete 更改样式及定位
2009-07-09 19:02 721版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文 ... -
Java中的main()方法详解
2009-07-12 16:23 652源文作者:leizhimin 源文链接:http:/ ... -
tapestry5 集成 spring 的事务管理
2009-07-22 15:43 599说明:使用的是tapestry5.1.0.5 和spring ... -
tapestry5 布局 参数的处理
2009-07-23 17:24 431<?xml version="1.0" ... -
tapestry不支持 等html特殊符号的解决方法
2009-07-23 17:34 544在使用tapestry时,偶然发现使用 &a ... -
WebService大讲堂之Axis2(1):用POJO实现0配置的WebService
2009-07-28 15:01 430转自:http://space.itpub.net ... -
WebService大讲堂之Axis2(2):复合类型数据的传递
2009-07-28 15:25 519转自:http://space.itpub.net/12921 ...
相关推荐
在`GridPanel.java`中,会定义Tapestry组件的Java类,包括属性、方法和事件处理逻辑。 3. **配置模板**:编写对应的HTML/TML模板文件,如`GridPanel.tml`,在这个模板中,可以通过Tapestry的标记语言来创建...
例如,我们可以使用 `@Parameter` 注解来指定输入参数,或者使用 `@Event` 注解来定义组件的事件处理方法。在 `MyEmail` 组件中,我们可能需要配置一个 `send` 事件,当用户点击发送按钮时触发: ```java import ...
在Tapestry中,大多数的编程都是声明式的,这意味着开发者可以使用XML或注解来定义页面和组件的行为,而不是编写大量的Java代码。这降低了代码的复杂性,提高了可读性和维护性。 4. **页面和组件生命周期**: ...
1. **声明式编程**:在Tapestry中,组件的行为是通过属性和事件来声明的,而不是通过大量的回调方法。 2. **类型安全**:组件属性可以直接绑定到模型对象,提供了强类型和编译时的错误检查。 3. **生命周期管理**:...
在Tapestry中,有时需要自定义JavaScript来处理更复杂的交互逻辑,或者与服务器进行异步通信。这个文件可能包含了与TabPanel相关的AJAX操作或DOM操作的代码。 使用这些文件,开发者可以创建一个完全自定义的...
在Tapestry中,这些组件不仅可以方便地呈现和管理用户输入,还可以配合各种事件处理程序,如onChange、onSubmit等,实现复杂的业务逻辑。同时,Tapestry的类型安全机制确保了服务器接收到的数据是经过验证的,减少了...
在IT行业中,开发高效、可维护的Web应用程序是至关重要的,而Tapestry、Hibernate和Spring框架的结合使用,能够帮助我们实现这一目标。本文将深入探讨如何在实际项目中运用这三个技术,以及它们如何协同工作,以实现...
3. **组件创建**:介绍Tapestry的组件模型,如何创建自定义组件,以及使用内置组件如表单、链接等。 4. **页面和组件生命周期**:解释页面和组件的生命周期方法,如构造器、初始化和销毁方法。 5. **事件处理和数据...
在这个完整的教程中,我们将深入探讨Tapestry中的Table和Tree组件,这两种组件在数据展示和交互中扮演着重要角色。 ### Tapestry Table组件 Table组件是Tapestry中用于显示数据列表的关键组件。它允许开发者以表格...
tapestry部分组件绑定参数的列表!
介绍Tapestry组件的使用和功能。内容还行,使用初学者入门。
它通过组件化的方法来构建网页,提供了丰富的功能,包括输入验证、本地化/国际化、状态/持久性管理、URL 构建/参数映射等。 Tapestry 的核心优势之一是它能够为不同的角色带来便利: - **终端用户**:Tapestry 在...
此外,还介绍了 **弹出层** 的使用方法以及 **T5 组件解析过程**,帮助开发者更好地理解和应用 Tapestry5 的各种特性。通过对以上知识点的掌握,开发者能够更加熟练地使用 Tapestry5 进行 Web 应用程序的开发。
Apache Tapestry 5 是一个基于Java的Web应用开发框架,其设计目的是为了简化Web应用程序的构建,提供组件化的页面构建、输入验证、本地化、状态管理和URL映射等功能。Tapestry 5 强调易用性,不仅对终端用户友好,...
"Tapestry4 Users Guide" 和 "Tapestry4 Quick Start" 这两份文档,分别提供了全面的用户指南和快速入门教程,帮助开发者了解和掌握Tapestry 4的使用方法和最佳实践。 10. **社区支持**: 作为Apache项目的一部分...
通过源码,我们可以学习如何在Tapestry中配置和使用Hibernate服务。 4. **Tapestry MongoDB**: 对MongoDB数据库的支持,让开发者能够利用NoSQL数据库的优势。源码揭示了如何在Tapestry应用中集成MongoDB,进行数据...
2. Tapestry 由“对象、方法、域”这些面像对象元素构成,但是它更关注于开发者关心的 Servlet API 的请求,回复,会话,属性,参数,URLs 等等开销。 3. Tapestry 关注的是如何联系用户的动作和这些动作所引响到的...
在Tapestry中,开发者无需关注HTTP请求的处理细节,如链接、请求流向和响应重定向等低级任务。相反,Tapestry的核心关注点在于页面、组件、事件、对象、方法和属性的管理。 Tapestry4.1.2 版本基于Servlet技术,...
在性能优化方面,Tapestry 4.0 使用了页面缓存和组件缓存策略,减少了服务器的负载,提升了应用的响应速度。此外,它的请求处理机制也进行了优化,使得请求的处理更加高效。 总的来说,Tapestry 4.0 是一个强大且...
3. **事件驱动**:Tapestry 采用事件驱动模型,用户操作可以触发组件内的事件,进而调用相应的处理方法。这种方式简化了页面与服务器间的交互逻辑。 4. **模板和元数据**:每个组件都有一个HTML模板,用于定义组件的...