`
tuxq5721
  • 浏览: 34459 次
社区版块
存档分类
最新评论

JSF —— 以编程方式访问用户界面组件

    博客分类:
  • JSF
JSF 
阅读更多

 

 

Facelets页面:hello.xhtml


3个用户界面组件:InputTextOutputTextCommandButton。用户在输入字段(InputText)中输入文本值并单击按钮(CommandButton)时,就用输入字段中输入的文本值更新出字段(OutputText)。

<htmlxmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core">

<h:head>

<title>hello.xhtml</title>

</h:head>

<h:body>

<h:form>

<h:inputText />

<h:commandButtonvalue="Click Me!"/>

<h:outputText value="Hello!" />

</h:form>

</h:body>

</html>

创建动作方法,用编程方式获取inputText组件的值,并设置outputText字段的值。这个动作方法应放在“支撑”bean中,支撑bean也会包含每个用户界面组件的实例。

 

hello.xhtml的支撑bean


@ManagedBean(name="backing_hello")

@RequestScoped

publicclass Hello {

private HtmlInputText inputText;

private HtmlOutputText outputText;

public void setInputText(HtmlInputText inputText) {

this.inputText = inputText;

}

public HtmlInputText getInputText() {

return inputText;

}

public void setOutputText(HtmlOutputText outputText) {

this.outputText = outputText;

}

public HtmlOutputText getOutputText() {

return outputText;

}

}

 

下面是经修改的Facelets页面:hello.xhtml


现在绑定了在支撑bean中声明的用户界面组件实现。这样就可以用编程方式访问页面中使用的实际组件。如果页面上的用户界面组件没有绑定到支撑bean中的组件实例(像以前一样),那么在请求时仍然会创建用户界面组件树,但是实例化组件和用户界面组件无关。

<h:form>

<h:inputText  binding="#{backing_hello.inputText}"/>

<h:commandButtonvalue="Click Me!"/>

<h:outputText value="Hello!" binding="#{backing_hello.outputText}"/>

</h:form>

 

动作方法commandButton_action()

单击按钮时,outputText的值被设置为inputText组件中输入的值。

public String commandButton_action(){

outputText.setValue(inputText.getValue());

return "success";

}

 

修改commandButtonaction属性


设为引用动作方法的方法表达式,从而确保单击按钮时会调用动作方法commandButton_action()

<h:commandButtonvalue="Click Me!"action="#{backing_hello.commandButton_action}"/>

 

程序在运行,发生了什么?

 

  1. 用户发出查看页面hello.xhtml的初始非回传请求。Faces控制器Servlet创建一个UIViewRoot组件,并把它保存到FacesContext中,从而处理请求。然后,重定向到Facelets页面:hello.xhtmlFacelets页面的执行造成UIViewRoot被子组件填充(成为一棵树),还使这些组件在添加到组件树渲染到客户端。然后,用户看到渲染的带有输入字段、按钮、输出字段(初始值为"hello")的页面。组件树被保存下来供后续请求使用。
  2. 用户把文本值(“Hello JSF!”)输入到输入字段,然后单击“Click Me!”按钮,使得回传请求提交给JSF应用程序。程序又一次进入初始的创建/恢复阶段,但是这次恢复了以前保存的树。然后在应用请求值阶段中使用值“Hello JSF!”更新服务器端InputText组件。由于没有验证和转换错误,也没有更新模型bean的属性(因为没有用组件的value属性对它进行值绑定),因此顺利到达调用应用程序阶段。在这个阶段中调用动作方法commandButton_action(),然后把inputText组件的值应用到outputText组件的值上。后续的渲染响应阶段渲染当前组件的状态并返回给用户。因为没有创建处理从动作方法返回的"success"值的导航规则,所以渲染的是同一个页面。

 

为了更好地理解用编程方式对用户界面组件进行处理,可以添加一个调用,在动作方法执行的时候把输入字段变成只读。

outputText.setValue(inputText.getValue());

inputText.setReadonly(true);

return"success";

分享到:
评论

相关推荐

    JSF入门必读——JSF入门基础

    JavaScript Server Faces(JSF)是Java平台上用于构建Web应用程序的一种框架,它旨在简化Web开发,尤其是在处理用户界面和服务器端逻辑交互方面。JSF的核心设计理念是通过组件模型、事件驱动和声明式编程来抽象出...

    JSF第一步--JSF+Spring+ Hibernate+AJAX编程实践 试读

    在IT行业中,JavaScript Server Faces(JSF)是一种用于构建企业级Web应用的Java框架,它提供了组件模型和事件驱动的编程模型。结合Spring框架,我们可以实现更灵活的依赖注入和服务管理,而Hibernate则是流行的ORM...

    精通JSF-基于EJB Hibernate Spring整合开发与项目实践-第15章代码

    **JSF(JavaServer Faces)**是Java平台上用于构建用户界面的官方标准,它提供了一种组件模型和事件处理机制,使得开发Web应用程序更为简单。JSF的核心是UI组件库,这些组件可以直接在HTML页面中使用,通过声明式的...

    JSF第一步

    JSF的核心组件包括Facelets,这是一个视图定义语言,用于创建用户界面;以及Managed Beans,它们是业务逻辑的容器,可以绑定到UI组件。 "第1章.pdf"很可能是教程的入门章节,它可能会介绍JSF的历史、设计目标以及在...

    Jsf整合三大框架及Spring Security

    它为开发者提供了丰富的UI组件、事件处理机制和生命周期管理,使得创建用户界面变得更加简单。在这个项目中,JSF将与三大框架——Spring、Hibernate和PrimeFaces进行深度整合,以实现更高效、更灵活的应用开发。 1....

    JSF.rar_0 猜迷-jsf_JSF

    JSF的另一个关键特性是其组件库,如PrimeFaces、RichFaces等,提供了丰富的UI组件,使得开发者能够快速构建用户界面。例如,`www.pudn.com.txt`可能包含了一些资源链接或者示例代码,这些可能来自于网络上的资源分享...

    JavaServer Faces核心编程(第3版)

    JSF是一种用于构建用户界面的MVC(模型-视图-控制器)框架,它简化了Web应用程序的开发,提供了组件化和事件驱动的编程模型。 在本书中,作者深入浅出地介绍了JSF的基本概念、核心组件、事件处理、数据绑定以及与...

    JSF 应用 在线购物系统

    - **组件模型**:JSF提供了一种基于组件的模型,开发者可以通过定义和组合UI组件来构建复杂的用户界面。 - **事件驱动**:JSF支持事件驱动的编程模式,使得开发者能够更加灵活地处理用户交互。 - **生命周期管理**:...

    JavaServer Faces完全参考手册(JSF:Complete Reference)

    - **JSF 用户界面组件架构**:深入讲解了JSF UI组件的内部架构。 - **用户界面组件树(视图)**:解释了UI组件树的概念。 - **用户界面组件和相关的“活动部分”**:讨论了UI组件与其他组件的交互。 - **用户界面...

    初探JSF框架入门指南,资源由网络分享整理,如有侵权请联系我

    JSF的核心组件包括Facelets,这是一个视图定义语言,用于创建用户界面;以及Managed Beans,它们是业务逻辑的容器,可以绑定到UI组件。 "第1章.pdf"很可能是教程的入门章节,它可能会介绍JSF的历史、设计目标以及在...

    spring+jsf+hibernate+ajax 电子商务系统

    接着,JSF作为Java EE的一部分,是一个用于构建Web用户界面的组件模型框架。JSF允许开发者使用声明式的方式处理用户交互,简化了前端开发。在电子商务系统中,JSF负责处理用户的请求,更新视图,与后端业务逻辑进行...

    jsf in Action源代码(6-10章).rar

    JSF是Java平台上的一个用于构建Web应用程序的组件模型框架,它极大地简化了用户界面的开发和维护。以下是对这些章节源代码中涉及的知识点的详细解析: 6. 面向组件的编程:这一章主要介绍了JSF的核心——组件模型。...

    JSF2整合Spring3------JSF学习笔记4

    JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级应用框架,尤其在依赖注入(DI)和面向切面编程(AOP)方面表现出色。本文将深入探讨如何将JSF2与Spring3进行整合,...

    JSf-Spring-Hibernate整合开发案例教程

    《JSf-Spring-Hibernate整合开发案例教程》是一本深入探讨如何将三种主流Java技术——JSF(JavaServer Faces)、Spring框架和Hibernate ORM工具进行高效整合的实践指南。本教程旨在帮助开发者掌握在Web应用程序开发...

    JSF Spring hibernate

    它简化了用户界面组件的创建和管理,提供了声明式编程模型,使得开发者可以专注于业务逻辑,而不是底层的HTTP处理。JSF使用自定义标签和事件驱动模型,允许开发者创建动态、数据驱动的用户界面。 2. **Spring ...

    Create a Java EE 6 Application with JSF 2, EJB 3.1, JPA, and NetBeans IDE 7

    JSF是一个用于构建用户界面的MVC框架,它提供了组件模型,使得开发者可以创建丰富的Web界面。PrimeFaces是一个基于JSF的开源Ajax框架,它扩展了JSF的功能,提供了更多现代Web应用所需的交互性和用户体验。在本教程中...

    jsf-spring-boot-starter-2.2.6.zip

    JSF是一种用于构建Web应用程序的Java EE框架,它提供了一种组件化的视图层模型,使得开发人员可以使用可重用的UI组件来构建用户界面。Spring Boot则是Spring框架的轻量级扩展,旨在简化Spring应用的初始设置和日常...

    TutorialsPoint SpringJDBC JSoup CouchDB Cassandra JSF Kotlin 教程

    5. JSF (JavaServer Faces):是Java EE平台的一部分,用于构建Web用户界面。JSF提供了一种组件化的方式来创建UI,通过声明式编程方式简化了开发过程。JSF生命周期包括六步,从初始化到渲染响应,处理用户输入,并与...

    Put JSF to work

    JSF是一种用于构建企业级Java Web应用的标准化用户界面框架。它基于Model-View-Controller (MVC) 架构,简化了复杂的Web页面处理流程,提供了丰富的组件库,使得开发者能够快速构建和维护复杂的Web界面。JSF的强大之...

    Core JavaServer Faces - English PDF

    - **组件化设计**:JSF采用了组件化的编程模型,允许开发者通过拖放组件的方式构建用户界面。这种方式不仅提高了开发效率,还降低了学习曲线。 - **可扩展性**:除了标准的HTML组件之外,JSF还支持自定义组件的创建...

Global site tag (gtag.js) - Google Analytics