`
ayaya
  • 浏览: 453793 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

jsf中应用javascript

阅读更多

转载

一个常见的情况是在触发一个动作之前弹出一个确认对话框(例如:删除一条记录,取消编辑)。另一个常见的情况是在保存一些信息到服务器之前在客户端做验证,例如在传回服务器之前验证 password和Confirm password是否相等。
这篇文章描述了在<h:commandLink>和<h:commandButton>组件里如何触发客户端的java script功能。 <h:commandLink> 关联一个java script和一个commandLink并不困难,但是为了能够成功关联你需要理解jsf是怎样解析<h:commandLink>组件的。
下面的例子说明了<h:commandLink>是怎么被解析成HTML的:
<h:form id=”userForm”>
<h:commandLink id=”lnkDeleteUser” value=”delete” action=”#{userBean.deleteUser}”/>
</h:form>
<a href="#" onclick= "clear_userForm();
document.forms['userForm'].elements['userForm:_link_hidden_'].value='userForm:lnkDeleteUser';
if (document.forms['userForm'].onsubmit){
if (document.forms['userForm'].onsubmit())
document.forms['userForm'].submit();
}
else {
document.forms['userForm'].submit();
}
return false; "
id="userForm:lnkDeleteUser">delete</a>
这里有几点需要注意:
1,<h:commandLink>被解析成了超级链接<a href/>。
2,这个超链接的href是"#";基本上是个无用的值。
3,JSF为这个超链接的'onclick'事件生成了一堆java script。忽略细节,它主要是调用 submit()函数来提交表单。
4,第三行比较有意思--这个组件的id (“userForm::lnkDeleteUser”) 被保存在了一个 hidden元素里。这也是jsf是如何知道哪个组件触发提交表单的操作并正确的调用 服务器端actions的关键。

大多数JSF组件允许我们为客户端的DHTML事件(比如onclick,ondoubleclick,onfocus等)注入java script的。但在<h:commandLink〉里JSF已经为onclick事件生成了相关的java script。下面的代码说明了如何在onclick事件里注入打开确认对话框的java script代码:
<h:form id=”userForm”>
<h:commandLink id=”lnkDeleteUser” value=”delete” onClick=”if (!confirm('Are you sure you want to delete this record?')) return false” action=”#{userBean.deleteUser}”/>
</h:form>
<a href="#" onclick= "if (!confirm('Are you sure you want to delete this record?')) return false;
clear_userForm();
document.forms['userForm'].elements['userForm:_link_hidden_'].value='userForm:lnkDeleteUser';
if (document.forms['userForm'].onsubmit){
if (document.forms['userForm'].onsubmit())
document.forms['userForm'].submit();
} else {
document.forms['userForm'].submit();
}
return false; "
id="userForm::lnkDeleteUser">delete</a>
另外一个需要注意的重点是java script在任何情况下都不能返回true值。如果返回true值的话,浏览器将会执行<a href="#"/>-这只是指向了一个虚拟的页。 <h:commandButton> commandButton组件要相对简单一些,下面的脚本说明了如何加入一个确认对话框:
<h:commandButton id=”btnCancel” value=”Cancel” onclick=”if (!confirm('You will lose all changes made. Are you sure?')) return false" />
<input id="userForm:btnCancel" name="userForm:btnCancel" type="submit" value="Cancel" onclick=" if (!confirm('You will lose all changes made. Are you sure?')) return false; clear_userForm(); "/>
在这里的commandButton被解析成了一个提交按钮。如果java script返回true值这个表单会被提交,如果返回false将会忽略表单的提交。 在JSF里成功使用java script的关键是理解它是怎样被解析的。理解一些java script会更好。另外需要小心的是语法,因为大多数IDE都不支持java script的语法交验。如果你写了一个语法错误,例如少了一个打括号,代码将会简单的默默的执行失败:)

分享到:
评论
1 楼 fourfire 2008-04-11  
这是jsf 1.2下的,1.1下面:commandLink 没有onclick,怎么办啊?

相关推荐

    JSF Web 应用开发实战源码

    1. **JSF生命周期**:JSF应用的每个请求都会经历一系列的阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用应用逻辑和渲染响应。理解这些阶段对于调试和优化JSF应用至关重要。 2. **组件模型**:JSF的...

    jsf帮助文档 中文手册 javascript js_ref

    本文主要围绕JavaScript和JSF的基础知识进行阐述,以及如何结合使用它们来提升Web应用的功能和用户体验。 一、JavaScript基础 1. 变量与数据类型:JavaScript支持动态类型,变量可以存储不同类型的值,如字符串、...

    CSS、JavaScript 和 JSF 精心打造 Ajax 应用

    本教程将深入探讨如何通过CSS、JavaScript和JavaServer Faces (JSF)框架来构建Ajax应用。 首先,我们来看看CSS(Cascading Style Sheets)在Ajax应用中的作用。CSS是用于描述HTML或XML(包括如SVG、MathML等各种XML...

    JSF帮助文档

    但是,根据上下文,我们可以推断文档可能包含有关JSF的详细教程或参考资料,比如如何配置JSF环境、创建JSF组件、处理用户事件以及调试JSF应用程序等内容。 总的来说,JSF是一个强大的工具,它为Java开发者提供了...

    JSF中文问题解决方法完整版

    1. **字符编码问题**:JSF应用中出现中文乱码通常与字符集有关。UTF-8是现在最广泛使用的编码格式,确保整个项目从服务器配置、Web.xml、页面元标签到数据库都统一使用UTF-8编码,可以避免大部分中文乱码问题。 2. ...

    《JSF Web应用开发实战》——原创精品系列

    第2章通常会介绍基础概念,包括JSF的基本架构、配置以及如何创建第一个JSF应用。第8章可能涉及更高级的主题,如数据验证、国际化和本地化、或者是AJAX集成,这些都是JSF开发中的重要环节。 学习《JSF Web应用开发...

    JSF入门(中文pdf)

    JavaScript全栈框架(JSF,JavaServer Faces)是Oracle公司主导开发的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。本资源提供了一份详细的JSF入门中文PDF教程,旨在帮助初学者快速理解并掌握JSF的...

    介绍JSF框架的PPT

    JSF框架支持与JavaScript等客户端技术的无缝集成,这有助于提升用户体验。例如,通过使用AJAX技术,可以实现无需刷新整个页面即可更新部分内容的功能,这对于提高用户体验非常有益。 #### 三、JSF的特性 ##### ...

    JSF全套(JSF入门教+ LIB+ Ajax4JSF使用手册 )

    学习Ajax4JSF,你将掌握如何在JSF应用中集成Ajax,创建异步交互,以及使用其提供的各种Ajax组件,如`a4j:support`和`a4j:commandButton`。 5. **JSF项目的创建**:这部分教程会指导你从零开始创建一个完整的JSF项目...

    ajax4jsf中文用户指南

    Ajax4JSF中文用户指南是一个非常实用的入门资料,它详细介绍了如何使用Ajax4JSF来增强JSF应用的用户体验,帮助开发者快速上手并熟练掌握Ajax4JSF的使用。如果你在JSF开发过程中遇到问题,可以在中国的JSF论坛上寻求...

    联合使用 CSS、JavaScript 和 JSF 精心打造 Ajax 应用程序

    在本系列的第二个部分中,我们将学习如何使用标准 JSF 组件的 JavaScript 相关属性。学习几种基于文档对象模型(Document Object Model,DOM)API、JavaScript™ 和层叠样式表(Cascading Style Sheets,CSS)的 Web...

    教程与手册(Dhtml手册、 JSF中文教程)

    总的来说,这个压缩包中的资料为学习和掌握Java Web开发,特别是DHTML、JSF和Struts2框架提供了全面的学习资源。通过深入阅读和实践这些教程和手册,开发者可以提升自己的技术水平,更好地应对复杂的Web开发挑战。

    JSF实战(中文+英文)

    - **模型**:在JSF中,模型通常由JavaBean(也称为Managed Beans)组成,它们存储和处理应用程序的数据。 - **视图**:视图是由JSF组件(如按钮、文本框等)组成的页面,这些组件可以动态地呈现模型中的数据。 - **...

    第1部分-增强JSF页面的外观

    在JSF应用中,通过在后台的XHTML组件上应用CSS类,可以实现页面样式的自定义。例如,可以使用CSS来调整按钮、表格和表单的样式,使它们与品牌形象一致,或者提供更好的用户体验。在“第1部分-增强JSF页面的外观”中...

    JSF中配置dwr

    JavaScript Server Faces (JSF) 是一个...这个过程让开发者能够构建更动态、更交互的JSF应用程序,同时需要注意安全性和性能优化。通过不断地实践和学习,你可以更深入地理解DWR与JSF的结合,提升Web应用的用户体验。

    JSF经典的js分页

    在分页上下文中,"纯js分页"意味着分页逻辑主要在客户端JavaScript中实现,而不是服务器端。这种实现方式的优点在于减少了服务器与客户端之间的通信,从而提高了页面响应速度。然而,这也意味着所有的数据需要一次性...

    ajax4jsf使用中文手册

    Ajax4JSF(全称是Ajax for JavaServer Faces)是一种集成在JavaServer Faces(JSF)框架中的Ajax库,它允许开发者在JSF应用程序中轻松实现异步数据更新,提供更流畅的用户体验。这份中文手册详细介绍了如何将Ajax...

    JsfDemo.zip_JSF_java mysql_javascript_sister7sz_wave81d

    这个压缩包重点展示了如何在MyEclipse开发环境中运用JSF技术来创建Web应用,同时结合了MySQL数据库和JavaScript进行数据管理和交互。 【描述】中的知识点详细说明: 1. **JavaServer Faces (JSF)**:JSF是Java平台...

    IBM JSF学习资料

    IBM的文档通常会详细解释如何在WebSphere环境中配置和部署JSF应用。 **4. JSF生命周期** 理解JSF的生命周期是关键。这包括请求处理、组件树的构建、值绑定的更新、验证、模型更新和视图渲染等步骤。在IBM的JSF学习...

    JSF+JS+CSS的一个应用

    在JSF应用中,CSS用来美化组件,定义页面的颜色、字体、布局等视觉特性。通过CSS,开发者可以实现组件的定制化,使其符合品牌风格或者提升用户体验。 在"JSF+JS+CSS的一个简单应用"中,我们可以理解这个项目可能...

Global site tag (gtag.js) - Google Analytics