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

JavaScript 访问 JSF 组件的方法

    博客分类:
  • JSF
阅读更多
先看下面的 JSF 页面:

<%...@ page language="java" pageEncoding="UTF-8"%>
<%...@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%...@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<html>
<head>
<title>My JSF 'login.jsp' starting page</title>
<script type="text/javascript">...
function isEmpty() ...{
var username = document.getElementById("formLogin:txtUsername").value;
var password = document.getElementById("formLogin:txtPassword").value;
if(username == "") ...{
alert("给老子输用户名!");
document.getElementById("formLogin:txtUsername").focus();
return false;
}
if(password == "") ...{
alert("不输密码你登录个铲铲!");
document.getElementById("formLogin:txtPassword").focus();
return false;
}
}
</script>
</head>
<body>
<center>
<f:view>
<h:form id="formLogin">
<div id="input">
<h:outputLabel value="用户名:" />
<h:inputText value="#{LoginManager.username}" id="txtUsername"
styleClass="formText" />
<br>
<h:outputLabel value="密码:" />
<h:inputSecret value="#{LoginManager.password}" id="txtPassword"
styleClass="formText" />
</div>
<div id="submit">
<h:commandButton value="提交" action="#{LoginManager.check}"
onclick="return isEmpty();" styleClass="formButton" />
<h:commandButton value="重置" type="button"
onclick="javascript:document.getElementById('formLogin').reset();
document.getElementById('formLogin:txtUsername').focus();"
styleClass="formButton" />
</div>
</h:form>
</f:view>
</center>
</body>
</html>

这个页面使用 JavaScript 来确认登录时用户名和密码是否为空,表单名为 formLogin,两个输入组件名为 txtUsername 和 txtPassword,当单击按钮时,将调用 JavaScript 函数 isEmpty(),根据条件判断显示对话框或是提交表单。

要注意的是,不能在 JavaScript 函数中使用如下类似语法来访问表单组件:
document.formLogin.txtUsername.value;
而应使用:
document.getElementById("formLogin:txtUsername").value;
或者:
document.forms.formLogin["formLogin:txtUsername"].value;

这是因为 JSF 解释上面的 <h:form id="formForm">...</h:form> 一段时会生成如下代码:

<form id="formLogin" method="post" action="/Project_Blog/login.faces"
enctype="application/x-www-form-urlencoded">
<div id="input">
<label>用户名:</label>
<input id="formLogin:txtUsername" type="text"
name="formLogin:txtUsername" class="formText" />
<br>
<label>密码:</label>
<input id="formLogin:txtPassword" type="password"
name="formLogin:txtPassword" value="" class="formText" />
</div>
<div id="submit">
<input type="submit" name="formLogin:_id2" value="&#25552;&#20132;"
onclick="return isEmpty();" class="formButton" />
<input type="button" name="formLogin:_id3" value="&#37325;&#32622;"
onclick="javascript:document.getElementById('formLogin').reset();
document.getElementById('formLogin:txtUsername').focus();" class="formButton" />
</div>
<input type="hidden" name="formLogin" value="formLogin" />
</form>

JSF 产生的所有表单控件都有符合 formName:componentName 格式的名称,这里的 formName 表示控件的表单的名称,而 componentName 表示组件名称。如果没有指定 id 属性,则 JSF 框架会自动创建标识符,就象上面的 HTML 片段中的按钮一样。因此,要访问上面的用户名字段,必须使用下列方法:

document.getElementById("formLogin:txtUsername").value;

分享到:
评论

相关推荐

    JSF1.2日历组件

    1. **JSF组件结构**:JSF组件是一个树状结构,由UIComponent基类派生,每个组件都包含属性、事件和行为。组件可以通过标签在JSP或Facelets视图中使用,并通过JSF生命周期进行渲染。 2. **自定义组件开发**:在JSF ...

    jsf帮助文档 中文手册 javascript js_ref

    2. JSF自定义组件:可以利用JavaScript和CSS增强JSF组件的外观和行为,实现更丰富的交互效果。 3. JavaScript库集成:JSF与jQuery、AngularJS等JavaScript库兼容,可进一步扩展功能。 4. 验证和转换:JSF提供了内置...

    JSF入门

    通过这个入门指南,你可以学习到JSF的基础知识,包括如何创建简单的JSF应用程序、理解和使用JSF组件、配置和管理Managed Beans,以及掌握JSF生命周期和Ajax支持。继续深入研究,你将能够利用JSF构建高效、可维护的...

    jsf工程

    开发者可以通过它来获取当前请求的信息,执行动作,或者访问其他JSF组件。 7. **Navigation**: JSF提供了导航机制,允许根据用户操作或业务规则来决定页面间的跳转。在faces-config.xml配置文件中,可以定义这些...

    JSF实例源代码下载

    2. **JSF组件**:JSF的核心是其组件库,这些组件可以直接在页面上使用,如输入字段、按钮、表格等。每个组件都有自己的属性、事件和行为,可以通过JSF EL(Expression Language)进行数据绑定和操作。 3. **JSF页面...

    《JSF入门》培训教程PPT

    每个模块可以通过JSF组件构建UI,Managed Beans处理业务逻辑,而EL和Ajax技术则增强了交互性和响应性。 九、JSF与其它技术的比较 JSF与其他Web框架,如Spring MVC和Struts,各有优势。JSF以其组件化和MVC架构赢得了...

    JSF 核心编程与入门

    JSF组件模型** JSF中的组件是构建用户界面的基本元素,它们可以是简单的HTML标签,也可以是复杂的自定义组件。每个组件都有一个唯一的标识符,可以通过EL(Expression Language)表达式进行访问和操作。例如,`h:...

    JSF实战(中文+英文)

    - **视图**:视图是由JSF组件(如按钮、文本框等)组成的页面,这些组件可以动态地呈现模型中的数据。 - **控制器**:JSF的控制器由Faces Servlet负责,它处理用户的请求,调用适当的模型方法,并更新视图。 **JSF...

    JSF入门实例 源代码

    JSF的页面(View)通常由JSF组件(如输入字段、按钮等)组成,这些组件映射到后台的Managed Beans(Model),并由Faces Servlet(Controller)协调工作。 3. Managed Beans: Managed Beans是JSF中的核心组件,...

    jsf页面

    7. **JSF生命周期**:JSF组件经历一系列的生命周期阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用后处理方法和渲染响应。 8. **转换和验证**:JSF允许开发者定义自定义的转换器和验证器,确保用户...

    值得看的jsf入门教程

    - JSF组件经历一系列的处理阶段,包括恢复视图、应用请求值、处理事件、更新模型值、验证、应用业务逻辑和呈现响应。 - 这些阶段允许开发者在合适的时间点插入自定义逻辑。 7. **转换和验证** - JSF提供了内置的...

    JSF示例程序(很详细)

    3. **掌握后端与前端交互**:如何通过JSF组件和后端Bean进行数据传递。 4. **了解MVC模式**:在实际项目中的应用和优势。 5. **实践组件自定义**:学习如何扩展JSF框架以满足个性化需求。 通过深入研究和实践这个...

    JSF课件.ppt

    2. **事件驱动模型**:当用户与UI组件交互时,会触发相应的事件,JSF框架处理这些事件并调用相应的处理器方法。 3. **组件模型**:JSF的组件模型允许第三方开发者扩展组件库,创建自定义的UI组件以满足特定需求。 ...

    开发JSF所需要的jar包

    例如,`javax.faces.component.UIComponent`是所有JSF组件的基类,而`javax.faces.application.Application`则提供了对整个应用程序的访问。 2. **JSF Implementations JAR**: 如MyFaces或Mojarra,是JSF规范的...

    J2EE JSF 简介

    具体而言,当用户首次请求访问JSF应用程序时,Faces Servlet首先准备JSF上下文,然后将用户导向所请求的页面。之后,在接收到用户的后续请求时,它会更新所有模型数据(如果用户提交了新数据)。 #### 3. JSF生命...

    JSF live demo 最新完整源代码

    Backing Bean可以被绑定到JSF组件,通过属性和方法与视图层交互。压缩包中的Backin Bean源码正是演示如何将这些Bean与用户界面关联的关键。 3. **JSF生命周期**:JSF有六步生命周期,包括初始化、恢复视图、应用...

    使用G4JSF集成GWT和JSF

    - 采用Facelets进行JSF组件开发,简化编码过程,避免传统JSP的繁琐。 - GWT项目结构保持不变,包括/client、/public和/server包,确保兼容性。 - 编译GWT组件生成JavaScript代码,放置在指定目录,以便部署到Web应用...

    Jsf2.0 Refrence

    4. **表达式语言(EL)**:JSF与Java Expression Language紧密集成,允许在JSF页面中直接访问bean属性和方法。EL简化了数据绑定,使得页面元素和后端模型之间的通信更为便捷。 5. **视图管理**:JSF采用MVC设计模式...

    JSF 学生管理系统

    可以通过`h:outputStylesheet`和`h:outputScript`标签引入外部资源,或者直接在JSF组件上添加样式类和事件监听器。 10. **JSF的可扩展性**: 通过使用Facelets作为视图层技术,可以自定义组件和模板,实现高度的可...

Global site tag (gtag.js) - Google Analytics