最近项目使用EJB3+JSF开发,曾经学过EJB,不过忘得差不多了,JSF完全没接触过,从零开始,学得好辛苦啊!
可以先了解jsf的入门的基础:入门之hello world
http://liusuper.iteye.com/blog/214089
之前使用struts,和后台的交互,从后台获取数据,都是通过struts的值栈(Value stack)以及ActionContext等获取后台数据,或者通过<S:ACTION>标签,自动调用action加载页面
但是刚开始接触jsf,完全没有搞明白,是怎么自动加载数据的。现在终于有点理解了。
在jsf中,每个数据都可以通过javabean(包括action)里get方法获取数据
例如<h:dataTable value="#{subscriber.subscriberList}" var="u" >
解析标签是会去找叫做subscriber的javabean,然后调用getSubscriberList()方法,获取返回的数据放到table里,就相当于struts通过<s:action>自动获取后台数据
目前用的标签有
<f:view> : 表示内部标签为jsf标签,在jsp文件中使用jsf标签时,必须在外面套上<f:view>
<h:commandLink>: 其实相当与HTML里的<a>标签,不过它可以提交表单到action,必须在<h:form>里使用
<h:dataTable>: 会自动解析成表格,结合EL可以从action或者javabean里取数据。
示例:表subscriber(用户)包含外键role_id,DAO和Service,action简化后如下(EJB参考下一篇EJB3入门)
@Named("subscriber")
@RequestScoped
public class SubscriberAction implements Action, Serializable {
private static final long serialVersionUID = 1L;
private String uuid;
private String realName;
private Integer roleId;
@EJB
private SubscriberService subscriberService;
@EJB
private RoleService roleService;
public SubscriberAction() {
}
public List<Subscriber> getSubscriberList() {
return subscriberService.getAll();
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getUuid() {
return uuid;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public Subscriber get() {
return subscriberService.get(uuid);
}
public Subscriber delete() {
return subscriberService.delete(uuid);
}
}
JSP页面
<f:view>
<h:form>
<h:dataTable value="#{subscriber.subscriberList}" var="u" >
<h:column>
<f:facet name="header">
<h:outputText value="姓名" />
</f:facet>
<h:outputText value="#{u.userName}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="角色" /></f:facet>
<h:outputText value="#{u.role.roleName}" /> <!-- 注意 此处因为在定义表EntityBean的时候配置lazy=false,所以可以直接取出role -->
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="操作" />
</f:facet>
<h:commandLink action="#{subscriber.get}" value="编辑" >
<f:param value="#{u.uuid}" name="uuid"></f:param>
</h:commandLink>
<f:verbatim> </f:verbatim>
<h:commandLink action="#{subscriber.delete}" value="删除" >
<f:param value="#{u.uuid}" name="uuid"></f:param>
</h:commandLink>
</h:column>
</h:dataTable>
</h:form>
</f:view>
还有几个比较简单的,大家比较容易理解使用的标签
<h:inputHidden value="#{subscriber.uuid }" /> 相当于<input type="hidden">
<h:outputText value="#{subscriber.errorMessage }" /> 相当于直接在JSF中输出文本
<h:commandButton value="提交" action="#{subscriber.update }"/> 相当于 <input type="submit">
不过action是写在这个标签里 而不是写在<H:FORM>里
<h:selectOneMenu>: 下拉菜单嚒,就是是<select />嚒,和<h:selectItems>联合使用。
<h:selectItems>,下拉菜单中的列表,参数直接用list<Subscriber>会有点问题。。。。要用List<SelectItem>
示例:
@ManagedBean(name="role")
@SessionScoped
public class RoleBean implements Serializable{
private static final long serialVersionUID = 1L;
@EJB
RoleService roleService;
public List<SelectItem> getRoleList() {
List<Role> roles = roleService.getAll();
List<SelectItem> roleList = new ArrayList<SelectItem>();
for(Role role : roles) {
roleList.add(new SelectItem(role.getId(),role.getRoleName()));
}
return roleList;
}
}
JSF中
<h:selectOneMenu value="#{subscriber.roleId }" >
<f:selectItems value="#{role.roleList}" />
</h:selectOneMenu>
还有一种用法不知道不知道行不行,反正我没有成功,直接返回List<xxx对象>
@ManagedBean(name="role")
@SessionScoped
public class RoleBean implements Serializable{
private static final long serialVersionUID = 1L;
@EJB
RoleService roleService;
public List<Role> getRoleList() {
List<Role> roleList= roleService.getAll();
return roleList;
}
}
JSF中,参数的用法是
<h:selectOneMenu value="#{subscriber.roleId }" >
<f:selectItems value="#{role.roleList}" var="r" itemLabel="#{r.roleName}" itemValue="#{r.id}"/>
</h:selectOneMenu>
上例中label是正确显示的,但是value却不是id,很诡异,继续摸索。。。。
先写这么多,待续。。
后面陆续用了一些其他标签,不过后来用了richface4了,还没整理。。。
原创,转载请注明原:
分享到:
相关推荐
下面将详细介绍JSF入门、JSF的主要特点以及JSF中的标签使用。 一、JSF入门 JSF入门涉及理解其基本架构和工作流程。JSF应用通常由以下部分组成: 1. **Facelets**: Facelets是JSF的默认视图描述语言,用于构建用户...
JSF使用XML格式的文件(Faces Config)来配置和管理组件、导航和事件处理。 **1. 搭建环境**:JSF的开发通常需要集成开发环境(IDE),如Eclipse或NetBeans,以及相应的JSF库,例如Mojarra或MyFaces。同时,还需要...
**JSF(JavaServer Faces)入门实例教程** JavaServer Faces(JSF)是Java平台上的一个用于构建Web应用程序的UI框架。它简化了用户界面组件的创建和管理,提供了MVC(模型-视图-控制器)架构,使得开发人员可以更...
这个"JSF入门实例 源代码"是专门为初学者设计的,帮助他们快速理解并掌握JSF的基本概念和用法。下面我们将深入探讨JSF的核心特性、工作原理以及如何通过给定的实例进行学习。 1. JSF概述: JSF是一种官方支持的...
总结来说,这个"JSF标签应用实例"提供了一个实际的环境来学习和实践JSF技术,包括标签的使用、组件的交互以及整个JSF应用的部署。通过深入研究和运行这个项目,开发者不仅可以理解JSF的基础,还能进一步掌握JavaWeb...
JSF的学习入门知识教程,里面有例子还有各个标签的使用及属性介绍
**JSF(JavaServer Faces)** 是一个Java平台上的...对于初学者,通过实践"JSF入门实例代码"中的例子,可以快速掌握JSF的基础知识,并逐步深入到更高级的主题,如Mojarra和MyFaces实现的差异,以及CDI和JSF的集成等。
在提供的PPT中,"_JSF入门环境配置XML配置和标签使用详细介绍以及发布部署.ppt",你将找到关于这些主题的详细步骤和解释。这份资源将帮助你理解JSF的基本工作原理,以及如何将其应用于实际项目。通过深入学习和实践...
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
**JSF(JavaServer Faces)入门 HelloWorld 指南** JavaServer Faces (JSF) 是一个用于构建用户界面的 JavaEE 核心技术,它提供了一种声明式的方式来创建 Web 应用程序的用户界面。JSF 提供了一个组件模型,使得...
4. **Ajax4JSF使用手册**:Ajax4JSF是JSF的一个扩展,它为JSF添加了Ajax功能,允许部分页面更新,提升用户体验。学习Ajax4JSF,你将掌握如何在JSF应用中集成Ajax,创建异步交互,以及使用其提供的各种Ajax组件,如`...
本教程旨在帮助初学者快速入门JSF,掌握其基本概念、架构和常用功能。 一、JSF概述 JSF是Java Community Process(JCP)制定的标准之一,它基于Model-View-Controller(MVC)设计模式,为Java EE平台提供了丰富的UI...
本系列资料包括《JSF入门》、《JSF Web应用实战开发》和《JSF2》,旨在帮助初学者快速掌握JSF的核心概念和技术。 《JSF入门简体中文版》是学习JSF的基础,它涵盖了JSF的基本架构、组件库、生命周期和事件处理等方面...
JSF支持Ajax(异步JavaScript和XML),通过f:ajax标签,可以在不刷新整个页面的情况下更新特定部分,提高用户体验。这使得JSF能够创建更动态、响应式的Web应用。 八、JSF与CDI集成 JSF可以与CDI(Contexts and ...
通过《JSF入门》简体中文版和《JSF标签》简体中文版这两份PDF文档,学习者可以深入理解JSF的工作原理,掌握基本的JSF开发技能,为后续的进阶学习打下坚实基础。无论是网页设计师还是应用程序开发者,都可以从中受益...
- `p:ajax`标签可以从PrimeFaces库中使用,用于实现异步请求。 10. **集成第三方库** - JSF生态系统中有许多优秀的库,如PrimeFaces、RichFaces和IceFaces,提供更多的组件和功能。 - PrimeFaces是一个广泛使用...
在这个"JSF入门实例-用户登录"中,我们将深入理解如何使用JSF来实现一个基本的用户登录功能。 1. **创建JSF工程** 在Eclipse这样的集成开发环境中,可以创建一个新的Dynamic Web Project,然后通过添加库或者使用...
#### 一、JSF概述与标签使用 JavaServer Faces(简称JSF)是一种基于Java EE的标准技术,它主要用于构建企业级Web应用。JSF提供了丰富的功能,包括表单处理、验证、国际化等,并通过一套强大的组件模型支持网页组件...