- 浏览: 122990 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
sunxiangfei91:
引用[*][url][/url]
Spring使用MimeMessageHelper -
lhb3015:
lz, Coder 这个类的代码呢??
Java RSA算法加密 -
b_lee:
顶顶顶 加两个字,再顶
Facelets是JSF更好的外衣 -
zhuqing08:
楼主 Coder 这个类的代码呢?
Java RSA算法加密 -
evajhhot:
貌似不行 有异常
BlazeDS 与Spring集成指南之一
首先创建一个ManagedBean用来记录我们提交按钮的数量。示例如下:
Count.java
package test;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "count")
@RequestScoped
public class Count implements Serializable {
private static final long serialVersionUID = 6499154494910177344L;
private int count = 0;
public int getCount() {
return count;
}
public void countIt() {
count++;
}
}
再来改造一下我们的echo.xhtml,如下:
echo.xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:echo="http://java.sun.com/jsf/composite/echo"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>测试简单的复合组件</title>
<meta http-equiv="keywords" content="jsf2.0,组件,ajax" />
<meta http-equiv="description" content="测试简单的复合组件." />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</h:head>
<body>
<div id="header" style="padding:100px 0 20px 100px;font-size:22px;font-weight:bold;border-bottom:solid 1px red">
这个应声器的作者是:#{echo.encoder.author}。
</div>
<div>
<h:form id="form" style="padding:20px 0 20px 100px">
<h:outputScript library="javax.faces" name="jsf.js" target="head"/>
<echo:echoInputText echo="#{echo}"></echo:echoInputText>
<div style="padding-left:50px">
<h:commandButton id="post" style="padding:3px;width:100px;" value="提交响应"
onclick="jsf.ajax.request(this, event, {execute:'form', render: 'after'}); return false;"
actionListener="#{count.countIt}"/>
</div>
</h:form>
</div>
<h:panelGroup id="after">
<div style="padding:20px 0 0 100px">
<div style="padding:0 0 10px 0">应声器更新次数:#{count.count}</div>
响应:<h:outputText id="echo" value="#{echo.outText}" escape="false"></h:outputText>
</div>
</h:panelGroup>
</body>
</html>
看看有些什么变化,其中加入了一行
<div style="padding:0 0 10px 0">应声器更新次数:#{count.count}</div>
用来记录更新次数。<h:outputScript library="javax.faces" name="jsf.js" target="head"/> 这一句用来引入JSF2.0的ajax支持,意思就是将JSF2.0的Ajax支持的javascript引用加到<h:head></h:head>标签之间。
再有一个变化就是CommandButton:
<h:commandButton id="post" style="padding:3px;width:100px;" value="提交响应"
onclick="jsf.ajax.request(this, event, {execute:'form', render: 'after'}); return false;"
actionListener="#{count.countIt}"/>
加入了一个onclick动作和一个监听事件。看到重点了,这儿解释一下onclick中的两个重要参数,execute:’form’是表示提交的是当前id为form的表单,render:’after’表示只更新id为after的页面元素。actionListener调用的是Count类中的countIt方法,这是JSF的事件模型,在以前的版本中就存在的,就不多做说明了。
好了,输入http://localhost:8080/TestJsf2.0/echo.xhtml可以查看一下运行效果,只有after之间的内容改变了吧。在JSF2.0中加入Ajax支持就是这么简单,^_^。具体的说明可参考https://javaserverfaces.dev.java.net/nonav/docs/2.0/jsdocs/symbols/jsf.ajax.html
JSF2.0中的Ajax有四个方法:jsf.ajax.addOnError(callback),jsf.ajax.addOnEvent(callback),jsf.ajax.request(source, event, options),jsf.ajax.response(request, context)。其中request用来请求,并通过options项设置错误回调,事件回调方法以及其他运行表单,更新内容等信息,response是回调方法,一般不需要自己设置,只要回传的方法符合标准,他会自动调用,并更新相应的位置,一个标准的返回数据如下:
<?xml version="1.0" encoding="utf-8"?>
<partial-response><changes><update id="after"><![CDATA[<span id="after">
<div style="padding:20px 0 0 100px">
<div style="padding:0 0 10px 0">应声器更新次数:1</div>
响应:<span id="echo">ddddd</span>
</div></span>]]></update><update id="javax.faces.ViewState"><![CDATA[-8017186116961147735:-2243811565520699646]]></update></changes></partial-response>
这个信息,我是用TCP/IP monitor截取,其中的中文部分在这个工具中是乱码,我为了看着方便,替换成中文了。
这个例子是可以正常运行了,不过用的时候是不是有一点不太对劲?计数总是1。^_^,这是一个陷阱。现在我们再修改一下Count.java,修改后如下:
Count.java
package test;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean(name = "count")
@ViewScoped
public class Count implements Serializable {
private static final long serialVersionUID = 6499154494910177344L;
private int count = 0;
public int getCount() {
return count;
}
public void countIt() {
count++;
}
}
与前面唯一的差别就是将@RequestScoped修改为了@ViewScoped。再看看计数正常了吧,^_^,留一点悬念给大家,从这个例子可以体会一下新加入的ViewScoped作用域的用法。如果技术值还一直是1,那肯定是你没有重新部署,redeploy一下,Ok!
Count.java
package test;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "count")
@RequestScoped
public class Count implements Serializable {
private static final long serialVersionUID = 6499154494910177344L;
private int count = 0;
public int getCount() {
return count;
}
public void countIt() {
count++;
}
}
再来改造一下我们的echo.xhtml,如下:
echo.xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:echo="http://java.sun.com/jsf/composite/echo"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>测试简单的复合组件</title>
<meta http-equiv="keywords" content="jsf2.0,组件,ajax" />
<meta http-equiv="description" content="测试简单的复合组件." />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</h:head>
<body>
<div id="header" style="padding:100px 0 20px 100px;font-size:22px;font-weight:bold;border-bottom:solid 1px red">
这个应声器的作者是:#{echo.encoder.author}。
</div>
<div>
<h:form id="form" style="padding:20px 0 20px 100px">
<h:outputScript library="javax.faces" name="jsf.js" target="head"/>
<echo:echoInputText echo="#{echo}"></echo:echoInputText>
<div style="padding-left:50px">
<h:commandButton id="post" style="padding:3px;width:100px;" value="提交响应"
onclick="jsf.ajax.request(this, event, {execute:'form', render: 'after'}); return false;"
actionListener="#{count.countIt}"/>
</div>
</h:form>
</div>
<h:panelGroup id="after">
<div style="padding:20px 0 0 100px">
<div style="padding:0 0 10px 0">应声器更新次数:#{count.count}</div>
响应:<h:outputText id="echo" value="#{echo.outText}" escape="false"></h:outputText>
</div>
</h:panelGroup>
</body>
</html>
看看有些什么变化,其中加入了一行
<div style="padding:0 0 10px 0">应声器更新次数:#{count.count}</div>
用来记录更新次数。<h:outputScript library="javax.faces" name="jsf.js" target="head"/> 这一句用来引入JSF2.0的ajax支持,意思就是将JSF2.0的Ajax支持的javascript引用加到<h:head></h:head>标签之间。
再有一个变化就是CommandButton:
<h:commandButton id="post" style="padding:3px;width:100px;" value="提交响应"
onclick="jsf.ajax.request(this, event, {execute:'form', render: 'after'}); return false;"
actionListener="#{count.countIt}"/>
加入了一个onclick动作和一个监听事件。看到重点了,这儿解释一下onclick中的两个重要参数,execute:’form’是表示提交的是当前id为form的表单,render:’after’表示只更新id为after的页面元素。actionListener调用的是Count类中的countIt方法,这是JSF的事件模型,在以前的版本中就存在的,就不多做说明了。
好了,输入http://localhost:8080/TestJsf2.0/echo.xhtml可以查看一下运行效果,只有after之间的内容改变了吧。在JSF2.0中加入Ajax支持就是这么简单,^_^。具体的说明可参考https://javaserverfaces.dev.java.net/nonav/docs/2.0/jsdocs/symbols/jsf.ajax.html
JSF2.0中的Ajax有四个方法:jsf.ajax.addOnError(callback),jsf.ajax.addOnEvent(callback),jsf.ajax.request(source, event, options),jsf.ajax.response(request, context)。其中request用来请求,并通过options项设置错误回调,事件回调方法以及其他运行表单,更新内容等信息,response是回调方法,一般不需要自己设置,只要回传的方法符合标准,他会自动调用,并更新相应的位置,一个标准的返回数据如下:
<?xml version="1.0" encoding="utf-8"?>
<partial-response><changes><update id="after"><![CDATA[<span id="after">
<div style="padding:20px 0 0 100px">
<div style="padding:0 0 10px 0">应声器更新次数:1</div>
响应:<span id="echo">ddddd</span>
</div></span>]]></update><update id="javax.faces.ViewState"><![CDATA[-8017186116961147735:-2243811565520699646]]></update></changes></partial-response>
这个信息,我是用TCP/IP monitor截取,其中的中文部分在这个工具中是乱码,我为了看着方便,替换成中文了。
这个例子是可以正常运行了,不过用的时候是不是有一点不太对劲?计数总是1。^_^,这是一个陷阱。现在我们再修改一下Count.java,修改后如下:
Count.java
package test;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean(name = "count")
@ViewScoped
public class Count implements Serializable {
private static final long serialVersionUID = 6499154494910177344L;
private int count = 0;
public int getCount() {
return count;
}
public void countIt() {
count++;
}
}
与前面唯一的差别就是将@RequestScoped修改为了@ViewScoped。再看看计数正常了吧,^_^,留一点悬念给大家,从这个例子可以体会一下新加入的ViewScoped作用域的用法。如果技术值还一直是1,那肯定是你没有重新部署,redeploy一下,Ok!
发表评论
-
Seam管理的事务
2010-01-28 15:22 1197EJB会话Bean有声明式事务 ... -
配置Seam组件之二
2010-01-16 20:30 947如果你有大量的组件需要在XML中进行配置,那么就很有必要将 c ... -
配置Seam组件之一
2010-01-16 20:29 981Seam所崇尚的哲学是XML配 ... -
Seam上下文
2009-12-25 15:23 1022Seam上下文是由框架创建 ... -
JSF和Spring的集成之二
2009-12-23 17:55 948使用框架 1 介绍 这个 ... -
JSF和Spring的集成之一
2009-12-19 20:45 772JSF和Spring集成的资料比较少,原理是获得彼此的上下文引 ... -
Seam配置和Seam应用程序打包之二
2009-11-28 09:15 1296将Seam与你的EJB容器集成 我们需要将 SeamInter ... -
Seam配置和Seam应用程序打包之一
2009-11-20 22:25 1144Seam基本配置 首先,让我们看看每当将Seam和JSF一起使 ... -
用Java Server Faces建立交互式WEB站点
2009-11-07 10:12 643步骤1:开发组件的Java ... -
集成JSF与BEEHIVE PAGE FLOW之二
2009-10-10 21:54 1035从后台bean访问当前页面 ... -
集成JSF与BEEHIVE PAGE FLOW之一
2009-10-07 23:13 997JSF对通过关联组件和事件来构建页面而说是非常棒的,但是,与所 ... -
借助Ajax自动保存JSF表单之二
2009-09-19 12:53 1216创建和发送 Ajax 请求 submitFormData() ... -
借助 Ajax 自动保存 JSF 表单之一
2009-09-13 11:00 1103在客户端获取表单数据 本节将给出一个 JSF 表单,其数据通 ... -
基于AJAX和JSF打造丰富的互联网组件之Weblets篇
2009-09-04 15:08 942为了在JSF开发中联合使用AJAX和Mozilla XUL技术 ... -
JSF2.0的页面模版化
2009-08-15 10:28 1733本篇介绍可以与Tapestry相媲美的页面模版化定义。 我 ... -
JSF2.0中自定义组件模型例子
2009-08-11 07:59 1333在本篇介绍中,我们开始接触JSF2.0纳为标准的最重要的特性之 ... -
Java Server Faces 2.0重要新功能以及相关改进简介
2009-08-01 10:00 1089JSF 2.0的最终规范也已经发布了有近一个月了,在近期试 ... -
JSF2: Ajax事件和错误
2009-07-09 09:13 1093JSF2的Ajax支持包含一个 ... -
Facelets是JSF更好的外衣
2009-06-16 15:53 1581是由 Sun 公司在 dev.java.net 上的一个开源项 ... -
JSF里自订验证器
2009-06-06 16:52 932您可以自订自己的验证器,所需要的是实作javax.faces. ...
相关推荐
**JSF 2.0(JavaServer ...总结来说,这个JSF 2.0的Ajax实现示例是一个宝贵的教育资源,可以帮助开发者快速理解和应用JSF的Ajax功能。通过详细阅读代码和中文注释,你将能够熟练地在自己的项目中使用Ajax提升用户体验。
文档《JSF2.0系列简介.doc》可能详细介绍了JSF 2.0的基础知识和实践指导,而压缩包中提供的源代码可能是为了演示如何在实际项目中使用JSF 2.0。这些示例可能涵盖了以下内容: - **创建基本的JSF页面**:展示如何...
**JSF 2.0(JavaServer Faces 2.0)是Java EE平台中的一个用于构建Web用户界面的组件框架。这个框架允许开发者通过声明式的方式处理用户交互,减轻了编写大量HTML和JavaScript代码的负担。** 在"Jsf2.0 Reference...
**JSF 2.0(JavaServer Faces 2.0)是Java EE 6中引入的一个重要的Web应用程序开发框架,用于构建用户界面。这个框架基于MVC(Model-View-Controller)模式,提供了丰富的组件库和事件处理机制,极大地简化了前端...
下面是一个简单的Facelets页面示例,这个例子展示了如何在Java EE 6中使用JSF 2.0和Facelets: 1. 首行定义了XML版本和编码。 2-3. DOCTYPE声明定义了文档遵循的XHTML标准。 4-7. 这里定义了页面的命名空间,包括...
在这个例子中,当 `input` 输入框失去焦点(`event="blur"`)时,会发送一个 AJAX 请求到服务器,更新 `output` 输出框的值。 ### 3. `render` 和 `execute` 属性 - `render` 属性:指定需要更新的组件的客户端 ID...
以下是一个简单的AJAX调用例子: 1. **添加AJAX行为**:在JSF页面中,可以使用`<f:ajax>`标签来触发AJAX请求。例如,我们可以添加一个按钮,当点击时更新页面的一部分: ```html <f:ajax execute="@this" ...
Web 2.0和Ajax的兴起标志着互联网从一个简单的信息展示平台转变为一个高度互动、用户中心和持续进化的生态系统。这些技术和服务的创新不仅改变了我们使用互联网的方式,也深刻影响了社会的多个层面。随着技术的不断...
要开始使用JSF2.0,你需要设置一个兼容的Java EE服务器(如Tomcat、GlassFish),安装JSF库,然后创建一个基本的JSF项目。可以使用Maven或Gradle等构建工具管理依赖,并通过IDE(如Eclipse或IntelliJ IDEA)创建和...
- **`<f:ajax>`标签**:这是一个关键的JSF标签,用于在不刷新整个页面的情况下触发Ajax请求。通过设置`render`和`execute`属性,可以指定哪些组件应该重新渲染,哪些组件应该重新执行。 - `render`属性默认为`@none...
这个"JSF(动态操作组件的例子)"项目是为开发者提供一个实践JSF动态操作组件的实例,帮助理解如何在JSF应用中创建、修改和删除组件。下面将详细介绍JSF的核心概念以及动态操作组件的相关知识点。 1. **JSF框架概述**...
- **SampleBean.java**是一个托管bean的例子,演示了如何设置和获取bean属性。 - **请求参数处理**: - GET请求参数会在页面渲染前设置bean属性。 - 当按钮被渲染时,会调用`getContinueOutcome()`方法,同时将...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了前端和后端的交互,提供了组件化、事件处理和生命周期管理等功能。JSF的核心是组件模型,允许开发者使用预定义的UI组件...
在本实例中,我们探索的是一个基于JSF 1.2、Spring 2.0和Hibernate 3.2的登录应用。这个集成框架是企业级Java应用程序开发的常见选择,因为它提供了模型-视图-控制器(MVC)架构、依赖注入(DI)以及持久化管理的...
`<f:ajax>`是JSF 2.0引入的一个内建标签,它使得开发者能够在JSF组件上轻松添加Ajax功能。通过`<f:ajax>`,你可以指定触发Ajax请求的事件、更新的DOM区域以及处理响应的后台方法。 例如: ```html ...
`p:ajax`标签是PrimeFaces库提供的一个例子,用于实现Ajax功能。 通过学习和实践这些章节的源码,开发者可以掌握JSF的基本用法,了解如何创建组件化、可维护的Web应用,并逐渐进阶到更复杂的JSF特性,如自定义组件...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它提供了一种组件化和事件驱动的方式来创建交互式的Web界面。JSF的核心概念包括组件、事件、渲染器和生命周期,这使得开发人员...
- **WEB-INF/classes/com/corejsf/SampleBean.java**:这是一个管理Bean的例子,用于存储业务逻辑。 - **Outcome 映射**:成功或错误的结果可以通过`faces-config.xml`中的映射进行配置,如果没有指定映射,则默认...
- JSF是一个MVC(Model-View-Controller)架构的框架,用于构建动态、数据驱动的Web应用。 - 它提供了一种声明式的方式处理用户输入,减轻了开发者的工作负担。 - JSF通过UI组件、事件处理和数据绑定等特性,提高...