here are 3 possible examples how to initialize component:
1. Using @Unwrap with method returning object - method doesn't have to be getter:
@Name("search")
public class SearchAction {
// can't be used with @Out
@Unwrap
public Map<String,Integer> initList() {
System.out.println("In-method initList");
Map<String,Integer> list = new TreeMap<String,Integer>();
list.put("one", 1);
list.put("two", 2);
list.put("three", 3);
return list;
}
}
to use this component on the page you need to call it search:
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
template="layout/template.xhtml">
<ui:define name="body">
<h:form id="search" styleClass="edit">
<h:selectOneMenu>
<s:selectItems
value="#{search}"/>
</h:selectOneMenu>
</h:form>
</ui:define>
</ui:composition>
2. Using @Factory with method returning void - method doesn't have to be getter and @Out must be used to outject object to page:
@Name("search")
public class SearchAction {
// use with @Out because creation method is returning void
@Out
private Map<String,Integer> list;
@Factory("list")
public void initList() {
System.out.println("In-method initList");
list = new TreeMap<String,Integer>();
list.put("one", 1);
list.put("two", 2);
list.put("three", 3);
list.put("six", 6);
}
}
to use this component on the page you need to call it list:
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
template="layout/template.xhtml">
<ui:define name="body">
<h:form id="search" styleClass="edit">
<h:selectOneMenu>
<s:selectItems
value="#{list}"/>
</h:selectOneMenu>
</h:form>
</ui:define>
</ui:composition>
3. Using @Factory with method returning object - method mut be getter, @Out is not needed
@Name("search")
public class SearchAction {
// without @Out annotation
@Factory("list")
public Map<String,Integer> getList() {
System.out.println("In-method initList");
Map<String,Integer> list = new TreeMap<String,Integer>();
list.put("one", 1);
list.put("two", 2);
list.put("three", 3);
return list;
}
}
component usage is like in example (2.)
Additionally class used in all these examples doesn't have to be EJB bean - they only have to be Seam component (marked by @Name annotation).
Each of these method is different - details can be found in http://chiralsoftware.com/jboss-seam-book/unwrap.seam as previously mentioned Thiago Rocha (thanks).
相关推荐
java jboss seam jboss-seam-selectitems
### SEAM 中文开发指南知识点概述 #### 一、SEAM 框架简介 ...以上是 SEAM 中文开发指南的主要知识点概述,从基础入门到高级功能均有涉及,旨在帮助开发者全面掌握 SEAM 框架的使用方法和技术要点。
**三、Seam与Java EE集成** 1. **JSF集成**: Seam与JSF的紧密结合,使得UI层的开发更为简便,通过Seam可以直接在JSF页面上操作后端数据。 2. **JPA集成**: Seam支持JPA,方便地处理数据库操作,包括实体管理和事务...
ANTLR中文文档预览版.pdf提供了ANTLR的基本概念和使用方法,对于需要处理自定义语法的Seam应用非常有用。 总的来说,这个文档集合为深入学习和实践Seam及相关技术提供了全面的参考资料。通过研究这些文档,开发者...
在“seam一些基本功能的实现方法”中,我们将探讨Seam的关键特性以及如何在实践中应用它们。 首先,Seam提供了组件模型,允许开发者将应用拆分为小而独立的部分,每个部分都称为一个Seam组件。这些组件可以很容易地...
在实际开发中,Seam注解和标签的结合使用可以极大地简化代码,提高开发效率。例如,通过`@Name`和`@In`注解,可以轻松地管理依赖关系;利用`@Entity`和`@Table`注解,可以方便地实现数据持久化;而`<s:form>`和`s:...
通过以上知识点的介绍,我们可以看出,《Beginning JSF2 APIs and JBoss Seam》不仅涵盖了JSF2和JBoss Seam的基本理论和技术要点,还提供了丰富的实战经验和案例分析,对于希望深入学习这两种技术的开发者来说,是一...
Seam使用EJB3的`@RolesAllowed`注解来指定哪些方法只能由拥有特定角色的用户调用。此外,还可以使用Seam的`@Restrict`注解进行更细粒度的控制。 3. **数据库设计**:为了实现基于数据库的权限管理,我们需要设计一...
本文将围绕“Seam框架中使用FCKeditor”的主题进行详细探讨,结合给出的标签“源码”和“工具”,我们将深入理解如何在Seam项目中集成并使用FCKeditor,以及相关的依赖库。 Seam是一个Java EE框架,它整合了JSF...
Seam是一个开源的Java EE框架,它将JavaServer Faces(JSF)与EJB3、Hibernate等技术结合在一起,提供了一种更为简化的企业级开发方式。在这个“seam级联菜单例子”中,我们将深入探讨如何在Seam应用中实现级联选择...
seam 中文文档 pdf 格式 JSF+EJB3.0快速开发框架Seam的中文版向导。。。
7. **国际化与本地化**:Seam支持多语言环境,对于中英文双语版本的书籍,这为开发者提供了跨越语言障碍的便利,帮助全球的开发者理解和使用Seam框架。 8. **测试支持**:Seam提供了一套完整的测试工具,包括单元...
这涉及到在web.xml文件中配置Seam Filter和Seam Listener,以便处理JSF请求生命周期中的事件,并确保Seam组件与JSF页面正确交互。 #### 1.1.2. 使用Facelets Facelets是JSF推荐的视图表示技术,提供了更简洁、可...
完成上述基础配置后,开发者就能在任何支持JSF的容器中使用Seam了。不过,Seam还提供了对Ajax和EJB 3的支持,需要根据项目需求进行额外的配置。 接下来,我们来看看Seam中常见的注解: 1. **@Name**:用于标识Seam...
2. 身份认证:在Seam Security中,身份认证可以通过简单的三步过程完成: - 声明认证方法:定义一个方法,该方法验证用户凭证是否有效,并通过表达式语言(EL)进行访问。 - 创建JSF登录表单:创建一个标准的Java...
通过上述章节的学习,读者不仅能够掌握 Seam 的基本使用方法,还能够深入了解其背后的实现原理和技术细节。无论是初学者还是有一定经验的开发者,都能够从中获益,提升自己的开发效率和代码质量。希望本篇文档能够...
- **使用“推”风格("push"-style)的MVC**:介绍了一种服务器主动推送数据给客户端的方法,提高了用户体验。 ##### 第二章:用Seam-gen快速起步 本章重点介绍了如何使用Seam-gen工具快速创建项目结构,为后续...
本文将围绕SeamTest的关键特性和使用方法进行详细探讨。 首先,SeamTest的核心在于它与Seam框架的紧密集成。Seam是一个全面的开发平台,旨在简化Java EE应用的构建,而SeamTest则是其测试工具链的重要组成部分。...
Seam框架是一个全面的Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB、CDI(Contexts and Dependency Injection)以及许多其他Java EE技术,为开发者提供了强大的组件模型和丰富的功能,旨在简化...