`
wtaoli
  • 浏览: 27947 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

jsf 中JavaScript 的使用

    博客分类:
  • JSF
阅读更多
一个常见的情况是在触发一个动作之前弹出一个确认对话框(例如:删除一条记录,取消编辑)。另一个常见的情况是在保存一些信息到服务器之前在客户端做验证,例如在传回服务器之前验证 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的语法交验。如果你写了一个语法错误,例如少了一个打括号,代码将会简单的默默的执行失败:)
分享到:
评论

相关推荐

    jsf帮助文档 中文手册 javascript js_ref

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

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

    2. **JSF标签**:JSF的UI组件是以标签的形式在JSP页面中使用的,这些标签对应于服务器端的组件。学习JSF标签,你需要理解每个标签的用途,如`h:inputText`用于文本输入,`h:commandButton`用于触发动作,以及如何...

    ajax4jsf使用中文手册

    要使用Ajax4JSF,首先需要将其依赖添加到项目的类路径中。通常,这涉及在Maven的`pom.xml`或构建脚本中指定对应的依赖。配置完成后,需要在JSF配置文件(如`faces-config.xml`)中声明Ajax4JSF的渲染器库。 ### 3. ...

    JSF帮助文档

    标签“jsf”直接指向JSF技术,意味着文档内容可能涉及JSF的使用、教程、最佳实践或者是解决JSF开发中遇到的问题。由于提供的文件内容主要是邮件头信息和HTML格式的元数据,它们并不直接包含JSF的具体知识点。但是,...

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

    在IT行业中,JavaScript框架(JSF,JavaServer Faces)是一种广泛应用的用于构建Web应用程序的UI层技术。这篇博文“JSF中文问题解决方法完整版”提供了关于如何处理JSF框架在处理中文字符时可能出现的问题的解决方案...

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

    例如,使用CSS设计一个响应式的布局,当用户在JSF组件(如输入框或下拉菜单)上触发事件时,通过JavaScript和JSF的Ajax功能向服务器发送请求,获取并动态渲染新的数据。这不仅减少了页面的加载时间,还确保了用户的...

    JSF入门(中文pdf)

    最后,JSF与其他Java EE技术如EJB、JPA、CDI等有良好的集成,这使得在大型企业级应用中使用JSF成为可能。通过这些集成,开发者可以方便地利用现有的服务和数据存储技术,构建出复杂且健壮的应用系统。 总的来说,...

    ajax4jsf中文用户指南

    **Ajax请求的发送**:在JSF页面中,你可以使用Ajax4JSF提供的组件,如`a4j:support`或`a4j:commandButton`,来触发Ajax请求。这些组件可以绑定到特定的事件,当事件发生时,会向服务器发送异步请求。 **决定发送...

    JSF经典的js分页

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

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

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

    JSF中配置dwr

    4. **前端JavaScript调用**:现在,你可以在JavaScript中使用DWR的API来调用后端方法。例如: ```javascript var myService = new MyService(); myService.someMethod(param1, function(response) { // 处理返回...

    ajax jsf javascript

    - **调用JSF 1.2组件**:掌握如何在JSF 1.2环境中使用Ajax4jsf组件是迁移或维护旧项目时的必要技能。 - **DataTable区域**:在DataTables中正确使用Ajax4jsf组件可以显著提升大型数据集的处理效率和用户界面的响应...

    jsf常用控件的使用

    在JavaScript Server Faces (JSF) 中,控件是构建用户界面的关键组成部分,它们允许开发者创建交互式的Web应用程序。本文将深入探讨JSF中的一些常见控件及其使用方法,旨在帮助开发者更好地理解和应用这些控件。 1....

    AJAX4JSF級聯

    AJAX4JSF級聯,實現省份與城市,只是一個簡單的Demo,沒有詳細省市資料.

    JsfDemo.zip_JSF_java mysql_javascript_sister7sz_wave81d

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

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

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

    JSF实战(中文+英文)

    在JSF页面中,你可以使用EL表达式来获取或设置模型中的数据,如`${bean.property}`。 **JSF生命周期** JSF有七个阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用应用程序、呈现响应和清理。每个阶段...

    使用G4JSF集成GWT和JSF

    GWT允许开发者使用Java编写前端应用,自动编译为JavaScript,而JSF则提供了一种基于组件的服务器端Web开发框架。G4JSF的主要目标是使得这种结合更加无缝和自然。 **GWT的核心特性** 1. **JavaScript抽象层**:GWT...

    JSF与Struts的区别

    在实际的项目中,开发者可以根据项目需求和自身的技术栈选择合适的框架,甚至可以在同一项目中结合使用JSF和Struts来发挥各自的优势。 总结来看,JSF更倾向于面向组件的编程方式,使得Web界面的设计更加直观和组件...

Global site tag (gtag.js) - Google Analytics