SlideShare a Scribd company logo
Module 8:
JSF and AJAX Basics


Thanisa Kruawaisayawan
 Thanachart Numnonda
 www.imcinstitute.com
Objectives
   What is JSF?
 Real-Life Examples of AJAX Apps
 What is AJAX and Why AJAX?
 Technologies Used In AJAX
 XMLHttpRequest




                                    2
JavaServer™ Faces (JSF) Framework
              Is…
   A server side user interface (UI)
   component framework for Java™
   technology-based web
   applications. (Validators)

   Drag-and-drop UI components to
   build a web Application.
Application Configuration File

   XML file for configuring resources required at
    application startup time
      navigation   rules, converters, validators, render kits
   Usually named as faces-config.xml
   A <faces-config> tag must enclose all of the other
    declarations
     <faces-config>
       ....
     </faces-config>
Two Tag Libraries

   jsf_core
      Definesother JSF related tags
      Independent of any rendering technology

   html_basic
      Defines  tags for representing common HTML user
       interface components
   JSP page need to declare them
     <%@ taglib uri="http://java.sun.com/jsf/core/" prefix="f" %>
     <%@ taglib uri="http://java.sun.com/jsf/html/" prefix="h" %>
<f:view> element
 Represents UIViewRoot component
 All component tags on the page must be
  enclosed in the view tag
    <f:view>
     ... other faces tags, possibly mixed with other
      content ...
    </f:view>
   Optional locale attribute
     Overrides   the Locale stored in the UIViewRoot
HTML Tags

 Used to control display data or accept data
  from the user
 Common attributes
     id:uniquely identifies the component
     value: identifies an external data source mapped
     to the component's value
     binding: identifies a bean property mapped to
     the component instance
Built-in UI Component Classes
   UIForm:
     Encapsulates  a group of controls that submit
      data to the application. This component is
      analogous to the form tag in HTML.
   UIInput:
     Takes  data input from a user
     is a subclass of UIOutput
   UIOutput:
     Displays   data output on a page
UIForm & <h:form> tag
   UIForm UI component
     An    input form with child components
        representing data that is either presented to the
        user or submitted with the form
 Encloses all of the controls that display or
  collect data from the user
 Include HTML markup to layout the controls
  on the page
       <h:form> tag itself does not perform any layout
UIInput & UIOutput Components

   UIInput component displays a value to a user and
    allows the user to modify this data
     The   most common example is a text field
   UIOutput component displays data that cannot be
    modified
     The   most common example is a label
   Conversions can occur
   Both UIInput and UIOutput components can be
    rendered in several different ways
UICommand & <h:commandButton>

   UICommand component performs an action
    when it is activated
     Most   common renderers are Button and Link
UICommand & <h:commandButton>

   Additional attributes
     action:
         is either a logical outcome String or a JSF EL
          expression that points to a bean method that returns a
          logical outcome String
         In either case, the logical outcome String is used by

          the navigation system to determine what page to
          access when the UICommand component is
          activated
Example1: <h:commandButton> from
               carDetail.jsp
<h:commandButton action="#{carstore.buyCurrentCar}"
                   value="#{bundle.buy}" />
 action attribute

      references a method on the CarStore backing bean that
       performs some processing and returns an outcome
      outcome is passed to the default NavigationHandler, which
       matches the outcome against a set of navigation rules defined
       in the application configuration file.
   value attribute
      references the localized message for the button's label
      bundle part of the expression refers to the ResourceBundle
       that contains a set of localized messages
greeting.jsp
 <f:view>
  <h:form id="helloForm" >
   <h2>Hi. My name is Duke. I'm thinking of a number from
     <h:outputText value="#{UserNumberBean.minimum}"/> to
     <h:outputText value="#{UserNumberBean.maximum}"/>. Can you guess it?
   </h2>

   <h:graphic_image id="waveImg" url="/wave.med.gif" />
   <h:inputText id="userNo" value="#{UserNumberBean.userNumber}“ />
   <h:commandButton id="submit" action="success" value="Submit" />
   <p>
   <h:messages style="color: red; font-family: 'New Century Schoolbook', serif;
       font-style: oblique; text-decoration: overline" id="errors1" for="userNo"/>
  </h:form>
 </f:view>
</HTML>
Validation Model
 jsf-core tag library also defines a set of tags that
  correspond to the standard Validator
  implementations
 Most of the tags have a set of attributes for
  configuring the validator's properties
     minimum   and maximum
Validator Tags

   <f:validator>
      Registers   a custom Validator on a component
   <f:validateLength>
      Registers   a LengthValidator on a component
   <f:validateLongRange>
      Registers   a LongRangeValidator on a component
   <f:validateDoubleRange>
      Registers   a DoubleRangeValidator on a component
Real-Life Examples of AJAX Apps
 Google   maps
  http://maps.google.com/
 Google   Suggest
  http://www.google.com/webhp?complete=1&hl=en
 Gmail
  http://gmail.com/
 Yahoo   Maps (new)
  http://maps.yahoo.com/
 Many    more are popping everywhere
                                                  17
What is AJAX?
 Asynchronous JavaScript And XML
 DHTML plus Asynchronous communication
  capability through XMLHttpRequest
 Pros
     Most viable RIA technology so far
     Tremendous industry momentum
     Several toolkits and frameworks are emerging
     No need to download code & no plug-in required

   Cons
     Still
          browser incompatibility
     JavaScript is hard to maintain and debug         18
Why AJAX?
   Intuitive and natural user interaction
     Noclicking required
     Mouse movement is a sufficient event trigger
   "Partial screen update" replaces the "click, wait, and
    refresh" user interaction model
     Only  user interface elements that contain new information
      are updated (fast response)
     The rest of the user interface remains displayed without
      interruption (no loss of operational context)
   Asynchronous communication replaces "synchronous
    request/response model."
                                                                   19
Interrupted user
operation while
the data is being
fetched




Uninterrupted
user operation
while data is
being fetched


             20
21
Server-Side AJAX Request Processing
 Server   programming model remains the same
   It
     receives standard HTTP GETs/POSTs
   Can use Servlet, JSP, JSF, ...
 With   minor constraints
   More   frequent and finer-grained requests from
    client
   Response content type can be
      text/xml
      text/plain

      text/json

      text/javascript                                22
Demo Scenario

 Runsample AJAX applications within
 NetBeans IDE
  Auto completion
  Data validation
  Progress bar
 You   can try this demo yourself
  These  applications are provided as built-in sample
   applications in NetBeans
                                                         23
Data Validation Example




                          24
Steps of AJAX Operation
1. A clientevent occurs
2. An XMLHttpRequest object is created
3. The XMLHttpRequest object is configured
4. The XMLHttpRequest object makes an async.
   request
5. The ValidateServlet returns an XML document
   containing the result
6. The XMLHttpRequest object calls the callback()
   function and processes the result
7. The HTML DOM is updated
                                                    25
1. A Client event occurs
 A JavaScript    function is called as the result of
  an event
 Example: validateUserId() JavaScript function
  is mapped as a event handler to a onkeyup
  event on input form field whose id is set to
  “userid”
  <input type="text" size="20" id="userid" name="id"
       onkeyup="validateUserId();">


                                                        26
2. An XMLHttpRequest object is created
var req;
function initRequest() {
  if (window.XMLHttpRequest) {
     req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
     isIE = true;
     req = new ActiveXObject("Microsoft.XMLHTTP");
  }
}
function validateUserId() {
  initRequest();
  req.onreadystatechange = processRequest;
  if (!target) target = document.getElementById("userid");
  var url = "validate?id=" + escape(target.value);
  req.open("GET", url, true);
  req.send(null);
}                                                            27
3. An XMLHttpRequest object is
    configured with a callback function
var req;
function initRequest() {
  if (window.XMLHttpRequest) {
     req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
     isIE = true;
     req = new ActiveXObject("Microsoft.XMLHTTP");
  }
}
function validateUserId() {
  initRequest();
  req.onreadystatechange = processRequest; // callback function
  if (!target) target = document.getElementById("userid");
  var url = "validate?id=" + escape(target.value);
  req.open("GET", url, true);
  req.send(null);                                                 28
}
4. XMLHttpRequest object makes an async.
                 request
function initRequest() {
  if (window.XMLHttpRequest) {
     req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
     isIE = true;
     req = new ActiveXObject("Microsoft.XMLHTTP");
  }
}
function validateUserId() {
  initRequest();
  req.onreadystatechange = processRequest;
  if (!target) target = document.getElementById("userid");
  var url = "validate?id=" + escape(target.value);
  req.open("GET", url, true);
  req.send(null);
}
 URL is set to validate?id=greg
                                                             29
5. The ValidateServlet returns an XML
  document containing the results (Server)

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {

 String targetId = request.getParameter("id");

 if ((targetId != null) && !accounts.containsKey(targetId.trim())) {
       response.setContentType("text/xml");
       response.setHeader("Cache-Control", "no-cache");
       response.getWriter().write("<valid>true</valid>");
    } else {
       response.setContentType("text/xml");
       response.setHeader("Cache-Control", "no-cache");
       response.getWriter().write("<valid>false</valid>");
    }
 }                                                                            30
6. XMLHttpRequest object calls callback()
     function and processes the result
 The XMLHttpRequest object was configured to
 call the processRequest() function when there is
 a state change to the readyState of the
 XMLHttpRequest object

 function processRequest() {
   if (req.readyState == 4) {
      if (req.status == 200) {
         var message = ...;
                                                    31
7. The HTML DOM is updated
 JavaScript technology gets a reference to any element
  in a page using DOM API
 The recommended way to gain a reference to an
  element is to call
     document.getElementById("userIdMessage"),     where
      "userIdMessage" is the ID attribute of an element appearing
      in the HTML document
   JavaScript technology may now be used to modify the
    element's attributes; modify the element's style
    properties; or add, remove, or modify child elements
                                                                    32
1.    <script type="text/javascript">
2.    function setMessageUsingDOM(message) {
3.       var userMessageElement = document.getElementById("userIdMessage");
4.       var messageText;
5.       if (message == "false") {
6.           userMessageElement.style.color = "red";
7.           messageText = "Invalid User Id";
8.       } else {
9.           userMessageElement.style.color = "green";
10.          messageText = "Valid User Id";
11.      }
12.      var messageBody = document.createTextNode(messageText);
13.      // if the messageBody element has been created simple replace it otherwise
14.      // append the new element
15.      if (userMessageElement.childNodes[0]) {
16.          userMessageElement.replaceChild(messageBody,
17.                                            userMessageElement.childNodes[0]);
18.      } else {
19.          userMessageElement.appendChild(messageBody);
20.      }
21.   }
22.   </script>
23.   <body>
24.     <div id="userIdMessage"></div>
25.   </body>                                                                         33
Acknowledgement
 Most contents are borrowed from the
presentation slides of Sang Shin, Java™
Technology Evangelist, Sun Microsystems,
Inc.




                                           34
Thank you

   thananum@gmail.com
www.facebook.com/imcinstitute
   www.imcinstitute.com



                                35

More Related Content

What's hot (20)

PPTX
Implicit objects advance Java
Darshit Metaliya
 
PDF
JSP Technology I
People Strategists
 
PPTX
Integration of Backbone.js with Spring 3.1
Michał Orman
 
PDF
J2EE jsp_01
Biswabrata Banerjee
 
DOCX
TY.BSc.IT Java QB U4
Lokesh Singrol
 
PPTX
Implicit object.pptx
chakrapani tripathi
 
PPTX
JSP - Java Server Page
Vipin Yadav
 
PPT
JSF Component Behaviors
Andy Schwartz
 
DOCX
TY.BSc.IT Java QB U3
Lokesh Singrol
 
PPTX
Jsp presentation
Sher Singh Bardhan
 
PPTX
Javatwo2012 java frameworkcomparison
Jini Lee
 
PDF
JSP Technology II
People Strategists
 
PPT
Spring 3.x - Spring MVC
Guy Nir
 
PPT
Java Server Faces (JSF) - advanced
BG Java EE Course
 
PPT
Java Server Faces (JSF) - Basics
BG Java EE Course
 
PDF
Lecture 5 JSTL, custom tags, maven
Fahad Golra
 
ODP
A Complete Tour of JSF 2
Jim Driscoll
 
PPTX
Introduction to JSP
Geethu Mohan
 
PPT
Spring MVC Basics
Bozhidar Bozhanov
 
PPT
Data Access with JDBC
BG Java EE Course
 
Implicit objects advance Java
Darshit Metaliya
 
JSP Technology I
People Strategists
 
Integration of Backbone.js with Spring 3.1
Michał Orman
 
J2EE jsp_01
Biswabrata Banerjee
 
TY.BSc.IT Java QB U4
Lokesh Singrol
 
Implicit object.pptx
chakrapani tripathi
 
JSP - Java Server Page
Vipin Yadav
 
JSF Component Behaviors
Andy Schwartz
 
TY.BSc.IT Java QB U3
Lokesh Singrol
 
Jsp presentation
Sher Singh Bardhan
 
Javatwo2012 java frameworkcomparison
Jini Lee
 
JSP Technology II
People Strategists
 
Spring 3.x - Spring MVC
Guy Nir
 
Java Server Faces (JSF) - advanced
BG Java EE Course
 
Java Server Faces (JSF) - Basics
BG Java EE Course
 
Lecture 5 JSTL, custom tags, maven
Fahad Golra
 
A Complete Tour of JSF 2
Jim Driscoll
 
Introduction to JSP
Geethu Mohan
 
Spring MVC Basics
Bozhidar Bozhanov
 
Data Access with JDBC
BG Java EE Course
 

Viewers also liked (19)

PDF
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Max Katz
 
PDF
Jsf Ajax
rajivmordani
 
PDF
Java Web Programming Using Cloud Platform
IMC Institute
 
PDF
Url programming
vantinhkhuc
 
PPT
Java Programming [12/12] : Thread
IMC Institute
 
PPT
Java Programming [6/12] : Object Oriented Java Programming
IMC Institute
 
PPT
Code quality tools
Lena Petsenchuk
 
PPTX
Web Development
Lena Petsenchuk
 
PPT
Web Application Introduction
shaojung
 
PDF
Java Web Services [2/5]: Introduction to SOAP
IMC Institute
 
PPT
Java Programming [3/12]: Control Structures
IMC Institute
 
PDF
Java Web Services [1/5]: Introduction to Web Services
IMC Institute
 
PDF
Java Web Programming [9/9] : Web Application Security
IMC Institute
 
ODP
Java Web Programming [1/9] : Introduction to Web Application
IMC Institute
 
PDF
Java Web Programming Using Cloud Platform: Module 10
IMC Institute
 
PDF
Java Web Services [4/5]: Java API for XML Web Services
IMC Institute
 
PDF
Java Web Services [5/5]: REST and JAX-RS
IMC Institute
 
PDF
Java Web Services [3/5]: WSDL, WADL and UDDI
IMC Institute
 
PPT
Cookies and sessions
Lena Petsenchuk
 
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Max Katz
 
Jsf Ajax
rajivmordani
 
Java Web Programming Using Cloud Platform
IMC Institute
 
Url programming
vantinhkhuc
 
Java Programming [12/12] : Thread
IMC Institute
 
Java Programming [6/12] : Object Oriented Java Programming
IMC Institute
 
Code quality tools
Lena Petsenchuk
 
Web Development
Lena Petsenchuk
 
Web Application Introduction
shaojung
 
Java Web Services [2/5]: Introduction to SOAP
IMC Institute
 
Java Programming [3/12]: Control Structures
IMC Institute
 
Java Web Services [1/5]: Introduction to Web Services
IMC Institute
 
Java Web Programming [9/9] : Web Application Security
IMC Institute
 
Java Web Programming [1/9] : Introduction to Web Application
IMC Institute
 
Java Web Programming Using Cloud Platform: Module 10
IMC Institute
 
Java Web Services [4/5]: Java API for XML Web Services
IMC Institute
 
Java Web Services [5/5]: REST and JAX-RS
IMC Institute
 
Java Web Services [3/5]: WSDL, WADL and UDDI
IMC Institute
 
Cookies and sessions
Lena Petsenchuk
 
Ad

Similar to Java Web Programming [8/9] : JSF and AJAX (20)

PPTX
Jsf presentation
Ashish Gupta
 
ODP
JSF 2.0 (JavaEE Webinar)
Roger Kitain
 
PDF
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
 
PDF
Google Web Toolkit
Software Park Thailand
 
PPT
Intoduction to Play Framework
Knoldus Inc.
 
PPTX
Developing ASP.NET Applications Using the Model View Controller Pattern
goodfriday
 
PPTX
Windows Store app using XAML and C#: Enterprise Product Development
Mahmoud Hamed Mahmoud
 
PDF
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Arun Gupta
 
PPT
AJAX
Gouthaman V
 
PPT
AJAX
Gouthaman V
 
PPT
Java script
fahhadalghamdi
 
PPT
Google Web Toolkit
Christos Stathis
 
PPTX
8-9-10. ASP_updated8-9-10. ASP_updated8-9-10. ASP_updated
dioduong345
 
PDF
Jsf intro
vantinhkhuc
 
PDF
Asp.net By Durgesh Singh
imdurgesh
 
PDF
What You Need To Build Cool Enterprise Applications With JSF
Max Katz
 
PPT
Asp.Net Ajax Component Development
Chui-Wen Chiu
 
PPT
Silverlight 2 for Developers - TechEd New Zealand 2008
Jonas Follesø
 
PPT
Google Web Toolkits
Yiguang Hu
 
PDF
ajax_pdf
tutorialsruby
 
Jsf presentation
Ashish Gupta
 
JSF 2.0 (JavaEE Webinar)
Roger Kitain
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
 
Google Web Toolkit
Software Park Thailand
 
Intoduction to Play Framework
Knoldus Inc.
 
Developing ASP.NET Applications Using the Model View Controller Pattern
goodfriday
 
Windows Store app using XAML and C#: Enterprise Product Development
Mahmoud Hamed Mahmoud
 
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Arun Gupta
 
Java script
fahhadalghamdi
 
Google Web Toolkit
Christos Stathis
 
8-9-10. ASP_updated8-9-10. ASP_updated8-9-10. ASP_updated
dioduong345
 
Jsf intro
vantinhkhuc
 
Asp.net By Durgesh Singh
imdurgesh
 
What You Need To Build Cool Enterprise Applications With JSF
Max Katz
 
Asp.Net Ajax Component Development
Chui-Wen Chiu
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Jonas Follesø
 
Google Web Toolkits
Yiguang Hu
 
ajax_pdf
tutorialsruby
 
Ad

More from IMC Institute (20)

PDF
นิตยสาร Digital Trends ฉบับที่ 14
IMC Institute
 
PDF
Digital trends Vol 4 No. 13 Sep-Dec 2019
IMC Institute
 
PDF
บทความ The evolution of AI
IMC Institute
 
PDF
IT Trends eMagazine Vol 4. No.12
IMC Institute
 
PDF
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
IMC Institute
 
PDF
IT Trends 2019: Putting Digital Transformation to Work
IMC Institute
 
PDF
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
IMC Institute
 
PDF
IT Trends eMagazine Vol 4. No.11
IMC Institute
 
PDF
แนวทางการทำ Digital transformation
IMC Institute
 
PDF
บทความ The New Silicon Valley
IMC Institute
 
PDF
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
IMC Institute
 
PDF
แนวทางการทำ Digital transformation
IMC Institute
 
PDF
The Power of Big Data for a new economy (Sample)
IMC Institute
 
PDF
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
IMC Institute
 
PDF
IT Trends eMagazine Vol 3. No.9
IMC Institute
 
PDF
Thailand software & software market survey 2016
IMC Institute
 
PPTX
Developing Business Blockchain Applications on Hyperledger
IMC Institute
 
PDF
Digital transformation @thanachart.org
IMC Institute
 
PDF
บทความ Big Data จากบล็อก thanachart.org
IMC Institute
 
PDF
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
IMC Institute
 
นิตยสาร Digital Trends ฉบับที่ 14
IMC Institute
 
Digital trends Vol 4 No. 13 Sep-Dec 2019
IMC Institute
 
บทความ The evolution of AI
IMC Institute
 
IT Trends eMagazine Vol 4. No.12
IMC Institute
 
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
IMC Institute
 
IT Trends 2019: Putting Digital Transformation to Work
IMC Institute
 
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
IMC Institute
 
IT Trends eMagazine Vol 4. No.11
IMC Institute
 
แนวทางการทำ Digital transformation
IMC Institute
 
บทความ The New Silicon Valley
IMC Institute
 
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
IMC Institute
 
แนวทางการทำ Digital transformation
IMC Institute
 
The Power of Big Data for a new economy (Sample)
IMC Institute
 
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
IMC Institute
 
IT Trends eMagazine Vol 3. No.9
IMC Institute
 
Thailand software & software market survey 2016
IMC Institute
 
Developing Business Blockchain Applications on Hyperledger
IMC Institute
 
Digital transformation @thanachart.org
IMC Institute
 
บทความ Big Data จากบล็อก thanachart.org
IMC Institute
 
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
IMC Institute
 

Recently uploaded (20)

PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Python basic programing language for automation
DanialHabibi2
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Python basic programing language for automation
DanialHabibi2
 

Java Web Programming [8/9] : JSF and AJAX

  • 1. Module 8: JSF and AJAX Basics Thanisa Kruawaisayawan Thanachart Numnonda www.imcinstitute.com
  • 2. Objectives  What is JSF?  Real-Life Examples of AJAX Apps  What is AJAX and Why AJAX?  Technologies Used In AJAX  XMLHttpRequest 2
  • 3. JavaServer™ Faces (JSF) Framework Is… A server side user interface (UI) component framework for Java™ technology-based web applications. (Validators) Drag-and-drop UI components to build a web Application.
  • 4. Application Configuration File  XML file for configuring resources required at application startup time  navigation rules, converters, validators, render kits  Usually named as faces-config.xml  A <faces-config> tag must enclose all of the other declarations <faces-config> .... </faces-config>
  • 5. Two Tag Libraries  jsf_core  Definesother JSF related tags  Independent of any rendering technology  html_basic  Defines tags for representing common HTML user interface components  JSP page need to declare them <%@ taglib uri="http://java.sun.com/jsf/core/" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html/" prefix="h" %>
  • 6. <f:view> element  Represents UIViewRoot component  All component tags on the page must be enclosed in the view tag <f:view> ... other faces tags, possibly mixed with other content ... </f:view>  Optional locale attribute  Overrides the Locale stored in the UIViewRoot
  • 7. HTML Tags  Used to control display data or accept data from the user  Common attributes  id:uniquely identifies the component  value: identifies an external data source mapped to the component's value  binding: identifies a bean property mapped to the component instance
  • 8. Built-in UI Component Classes  UIForm:  Encapsulates a group of controls that submit data to the application. This component is analogous to the form tag in HTML.  UIInput:  Takes data input from a user  is a subclass of UIOutput  UIOutput:  Displays data output on a page
  • 9. UIForm & <h:form> tag  UIForm UI component  An input form with child components representing data that is either presented to the user or submitted with the form  Encloses all of the controls that display or collect data from the user  Include HTML markup to layout the controls on the page  <h:form> tag itself does not perform any layout
  • 10. UIInput & UIOutput Components  UIInput component displays a value to a user and allows the user to modify this data  The most common example is a text field  UIOutput component displays data that cannot be modified  The most common example is a label  Conversions can occur  Both UIInput and UIOutput components can be rendered in several different ways
  • 11. UICommand & <h:commandButton>  UICommand component performs an action when it is activated  Most common renderers are Button and Link
  • 12. UICommand & <h:commandButton>  Additional attributes  action:  is either a logical outcome String or a JSF EL expression that points to a bean method that returns a logical outcome String  In either case, the logical outcome String is used by the navigation system to determine what page to access when the UICommand component is activated
  • 13. Example1: <h:commandButton> from carDetail.jsp <h:commandButton action="#{carstore.buyCurrentCar}" value="#{bundle.buy}" />  action attribute  references a method on the CarStore backing bean that performs some processing and returns an outcome  outcome is passed to the default NavigationHandler, which matches the outcome against a set of navigation rules defined in the application configuration file.  value attribute  references the localized message for the button's label  bundle part of the expression refers to the ResourceBundle that contains a set of localized messages
  • 14. greeting.jsp <f:view> <h:form id="helloForm" > <h2>Hi. My name is Duke. I'm thinking of a number from <h:outputText value="#{UserNumberBean.minimum}"/> to <h:outputText value="#{UserNumberBean.maximum}"/>. Can you guess it? </h2> <h:graphic_image id="waveImg" url="/wave.med.gif" /> <h:inputText id="userNo" value="#{UserNumberBean.userNumber}“ /> <h:commandButton id="submit" action="success" value="Submit" /> <p> <h:messages style="color: red; font-family: 'New Century Schoolbook', serif; font-style: oblique; text-decoration: overline" id="errors1" for="userNo"/> </h:form> </f:view> </HTML>
  • 15. Validation Model  jsf-core tag library also defines a set of tags that correspond to the standard Validator implementations  Most of the tags have a set of attributes for configuring the validator's properties  minimum and maximum
  • 16. Validator Tags  <f:validator>  Registers a custom Validator on a component  <f:validateLength>  Registers a LengthValidator on a component  <f:validateLongRange>  Registers a LongRangeValidator on a component  <f:validateDoubleRange>  Registers a DoubleRangeValidator on a component
  • 17. Real-Life Examples of AJAX Apps  Google maps  http://maps.google.com/  Google Suggest  http://www.google.com/webhp?complete=1&hl=en  Gmail  http://gmail.com/  Yahoo Maps (new)  http://maps.yahoo.com/  Many more are popping everywhere 17
  • 18. What is AJAX?  Asynchronous JavaScript And XML  DHTML plus Asynchronous communication capability through XMLHttpRequest  Pros  Most viable RIA technology so far  Tremendous industry momentum  Several toolkits and frameworks are emerging  No need to download code & no plug-in required  Cons  Still browser incompatibility  JavaScript is hard to maintain and debug 18
  • 19. Why AJAX?  Intuitive and natural user interaction  Noclicking required  Mouse movement is a sufficient event trigger  "Partial screen update" replaces the "click, wait, and refresh" user interaction model  Only user interface elements that contain new information are updated (fast response)  The rest of the user interface remains displayed without interruption (no loss of operational context)  Asynchronous communication replaces "synchronous request/response model." 19
  • 20. Interrupted user operation while the data is being fetched Uninterrupted user operation while data is being fetched 20
  • 21. 21
  • 22. Server-Side AJAX Request Processing  Server programming model remains the same  It receives standard HTTP GETs/POSTs  Can use Servlet, JSP, JSF, ...  With minor constraints  More frequent and finer-grained requests from client  Response content type can be  text/xml  text/plain  text/json  text/javascript 22
  • 23. Demo Scenario  Runsample AJAX applications within NetBeans IDE  Auto completion  Data validation  Progress bar  You can try this demo yourself  These applications are provided as built-in sample applications in NetBeans 23
  • 25. Steps of AJAX Operation 1. A clientevent occurs 2. An XMLHttpRequest object is created 3. The XMLHttpRequest object is configured 4. The XMLHttpRequest object makes an async. request 5. The ValidateServlet returns an XML document containing the result 6. The XMLHttpRequest object calls the callback() function and processes the result 7. The HTML DOM is updated 25
  • 26. 1. A Client event occurs  A JavaScript function is called as the result of an event  Example: validateUserId() JavaScript function is mapped as a event handler to a onkeyup event on input form field whose id is set to “userid” <input type="text" size="20" id="userid" name="id" onkeyup="validateUserId();"> 26
  • 27. 2. An XMLHttpRequest object is created var req; function initRequest() { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { isIE = true; req = new ActiveXObject("Microsoft.XMLHTTP"); } } function validateUserId() { initRequest(); req.onreadystatechange = processRequest; if (!target) target = document.getElementById("userid"); var url = "validate?id=" + escape(target.value); req.open("GET", url, true); req.send(null); } 27
  • 28. 3. An XMLHttpRequest object is configured with a callback function var req; function initRequest() { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { isIE = true; req = new ActiveXObject("Microsoft.XMLHTTP"); } } function validateUserId() { initRequest(); req.onreadystatechange = processRequest; // callback function if (!target) target = document.getElementById("userid"); var url = "validate?id=" + escape(target.value); req.open("GET", url, true); req.send(null); 28 }
  • 29. 4. XMLHttpRequest object makes an async. request function initRequest() { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { isIE = true; req = new ActiveXObject("Microsoft.XMLHTTP"); } } function validateUserId() { initRequest(); req.onreadystatechange = processRequest; if (!target) target = document.getElementById("userid"); var url = "validate?id=" + escape(target.value); req.open("GET", url, true); req.send(null); }  URL is set to validate?id=greg 29
  • 30. 5. The ValidateServlet returns an XML document containing the results (Server) public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String targetId = request.getParameter("id"); if ((targetId != null) && !accounts.containsKey(targetId.trim())) { response.setContentType("text/xml"); response.setHeader("Cache-Control", "no-cache"); response.getWriter().write("<valid>true</valid>"); } else { response.setContentType("text/xml"); response.setHeader("Cache-Control", "no-cache"); response.getWriter().write("<valid>false</valid>"); } } 30
  • 31. 6. XMLHttpRequest object calls callback() function and processes the result  The XMLHttpRequest object was configured to call the processRequest() function when there is a state change to the readyState of the XMLHttpRequest object function processRequest() { if (req.readyState == 4) { if (req.status == 200) { var message = ...; 31
  • 32. 7. The HTML DOM is updated  JavaScript technology gets a reference to any element in a page using DOM API  The recommended way to gain a reference to an element is to call  document.getElementById("userIdMessage"), where "userIdMessage" is the ID attribute of an element appearing in the HTML document  JavaScript technology may now be used to modify the element's attributes; modify the element's style properties; or add, remove, or modify child elements 32
  • 33. 1. <script type="text/javascript"> 2. function setMessageUsingDOM(message) { 3. var userMessageElement = document.getElementById("userIdMessage"); 4. var messageText; 5. if (message == "false") { 6. userMessageElement.style.color = "red"; 7. messageText = "Invalid User Id"; 8. } else { 9. userMessageElement.style.color = "green"; 10. messageText = "Valid User Id"; 11. } 12. var messageBody = document.createTextNode(messageText); 13. // if the messageBody element has been created simple replace it otherwise 14. // append the new element 15. if (userMessageElement.childNodes[0]) { 16. userMessageElement.replaceChild(messageBody, 17. userMessageElement.childNodes[0]); 18. } else { 19. userMessageElement.appendChild(messageBody); 20. } 21. } 22. </script> 23. <body> 24. <div id="userIdMessage"></div> 25. </body> 33
  • 34. Acknowledgement Most contents are borrowed from the presentation slides of Sang Shin, Java™ Technology Evangelist, Sun Microsystems, Inc. 34
  • 35. Thank you [email protected] www.facebook.com/imcinstitute www.imcinstitute.com 35