SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Implicit objects advance Java
Implicit objects advance JavaImplicit objects advance Java
Implicit objects advance JavaDarshit Metaliya
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Michał Orman
 
JSP - Java Server Page
JSP - Java Server PageJSP - Java Server Page
JSP - Java Server PageVipin Yadav
 
JSF Component Behaviors
JSF Component BehaviorsJSF Component Behaviors
JSF Component BehaviorsAndy Schwartz
 
Javatwo2012 java frameworkcomparison
Javatwo2012 java frameworkcomparisonJavatwo2012 java frameworkcomparison
Javatwo2012 java frameworkcomparisonJini Lee
 
Spring 3.x - Spring MVC
Spring 3.x - Spring MVCSpring 3.x - Spring MVC
Spring 3.x - Spring MVCGuy Nir
 
Java Server Faces (JSF) - advanced
Java Server Faces (JSF) - advancedJava Server Faces (JSF) - advanced
Java Server Faces (JSF) - advancedBG Java EE Course
 
Java Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsJava Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsBG Java EE Course
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, mavenFahad Golra
 
A Complete Tour of JSF 2
A Complete Tour of JSF 2A Complete Tour of JSF 2
A Complete Tour of JSF 2Jim Driscoll
 
Introduction to JSP
Introduction to JSPIntroduction to JSP
Introduction to JSPGeethu Mohan
 

La actualidad más candente (20)

Implicit objects advance Java
Implicit objects advance JavaImplicit objects advance Java
Implicit objects advance Java
 
JSP Technology I
JSP Technology IJSP Technology I
JSP Technology I
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1
 
J2EE jsp_01
J2EE jsp_01J2EE jsp_01
J2EE jsp_01
 
TY.BSc.IT Java QB U4
TY.BSc.IT Java QB U4TY.BSc.IT Java QB U4
TY.BSc.IT Java QB U4
 
Implicit object.pptx
Implicit object.pptxImplicit object.pptx
Implicit object.pptx
 
JSP - Java Server Page
JSP - Java Server PageJSP - Java Server Page
JSP - Java Server Page
 
JSF Component Behaviors
JSF Component BehaviorsJSF Component Behaviors
JSF Component Behaviors
 
TY.BSc.IT Java QB U3
TY.BSc.IT Java QB U3TY.BSc.IT Java QB U3
TY.BSc.IT Java QB U3
 
Jsp presentation
Jsp presentationJsp presentation
Jsp presentation
 
Javatwo2012 java frameworkcomparison
Javatwo2012 java frameworkcomparisonJavatwo2012 java frameworkcomparison
Javatwo2012 java frameworkcomparison
 
JSP Technology II
JSP Technology IIJSP Technology II
JSP Technology II
 
Spring 3.x - Spring MVC
Spring 3.x - Spring MVCSpring 3.x - Spring MVC
Spring 3.x - Spring MVC
 
Java Server Faces (JSF) - advanced
Java Server Faces (JSF) - advancedJava Server Faces (JSF) - advanced
Java Server Faces (JSF) - advanced
 
Java Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsJava Server Faces (JSF) - Basics
Java Server Faces (JSF) - Basics
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
 
A Complete Tour of JSF 2
A Complete Tour of JSF 2A Complete Tour of JSF 2
A Complete Tour of JSF 2
 
Introduction to JSP
Introduction to JSPIntroduction to JSP
Introduction to JSP
 
Spring MVC Basics
Spring MVC BasicsSpring MVC Basics
Spring MVC Basics
 
Data Access with JDBC
Data Access with JDBCData Access with JDBC
Data Access with JDBC
 

Destacado

Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF SummitAjax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF SummitMax Katz
 
Java Web Programming Using Cloud Platform
Java Web Programming Using Cloud PlatformJava Web Programming Using Cloud Platform
Java Web Programming Using Cloud PlatformIMC Institute
 
Java Programming [12/12] : Thread
Java Programming [12/12] : ThreadJava Programming [12/12] : Thread
Java Programming [12/12] : ThreadIMC Institute
 
Java Programming [6/12] : Object Oriented Java Programming
Java Programming [6/12] : Object Oriented Java ProgrammingJava Programming [6/12] : Object Oriented Java Programming
Java Programming [6/12] : Object Oriented Java ProgrammingIMC Institute
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introductionshaojung
 
Java Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAPJava Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAPIMC Institute
 
Java Programming [3/12]: Control Structures
Java Programming [3/12]:  Control StructuresJava Programming [3/12]:  Control Structures
Java Programming [3/12]: Control StructuresIMC Institute
 
Java Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web ServicesJava Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web ServicesIMC Institute
 
Java Web Programming [9/9] : Web Application Security
Java Web Programming [9/9] : Web Application SecurityJava Web Programming [9/9] : Web Application Security
Java Web Programming [9/9] : Web Application SecurityIMC Institute
 
Java Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationJava Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationIMC Institute
 
Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10IMC Institute
 
Java Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web ServicesJava Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web ServicesIMC Institute
 
Java Web Services [5/5]: REST and JAX-RS
Java Web Services [5/5]: REST and JAX-RSJava Web Services [5/5]: REST and JAX-RS
Java Web Services [5/5]: REST and JAX-RSIMC Institute
 
Java Web Services [3/5]: WSDL, WADL and UDDI
Java Web Services [3/5]: WSDL, WADL and UDDIJava Web Services [3/5]: WSDL, WADL and UDDI
Java Web Services [3/5]: WSDL, WADL and UDDIIMC Institute
 

Destacado (19)

Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF SummitAjax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
 
Jsf Ajax
Jsf AjaxJsf Ajax
Jsf Ajax
 
Java Web Programming Using Cloud Platform
Java Web Programming Using Cloud PlatformJava Web Programming Using Cloud Platform
Java Web Programming Using Cloud Platform
 
Url programming
Url programmingUrl programming
Url programming
 
Java Programming [12/12] : Thread
Java Programming [12/12] : ThreadJava Programming [12/12] : Thread
Java Programming [12/12] : Thread
 
Java Programming [6/12] : Object Oriented Java Programming
Java Programming [6/12] : Object Oriented Java ProgrammingJava Programming [6/12] : Object Oriented Java Programming
Java Programming [6/12] : Object Oriented Java Programming
 
Code quality tools
Code quality toolsCode quality tools
Code quality tools
 
Web Development
Web DevelopmentWeb Development
Web Development
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
Java Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAPJava Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAP
 
Java Programming [3/12]: Control Structures
Java Programming [3/12]:  Control StructuresJava Programming [3/12]:  Control Structures
Java Programming [3/12]: Control Structures
 
Java Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web ServicesJava Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web Services
 
Java Web Programming [9/9] : Web Application Security
Java Web Programming [9/9] : Web Application SecurityJava Web Programming [9/9] : Web Application Security
Java Web Programming [9/9] : Web Application Security
 
Java Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationJava Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web Application
 
Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10
 
Java Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web ServicesJava Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web Services
 
Java Web Services [5/5]: REST and JAX-RS
Java Web Services [5/5]: REST and JAX-RSJava Web Services [5/5]: REST and JAX-RS
Java Web Services [5/5]: REST and JAX-RS
 
Java Web Services [3/5]: WSDL, WADL and UDDI
Java Web Services [3/5]: WSDL, WADL and UDDIJava Web Services [3/5]: WSDL, WADL and UDDI
Java Web Services [3/5]: WSDL, WADL and UDDI
 
Cookies and sessions
Cookies and sessionsCookies and sessions
Cookies and sessions
 

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

JSF 2.0 (JavaEE Webinar)
JSF 2.0 (JavaEE Webinar)JSF 2.0 (JavaEE Webinar)
JSF 2.0 (JavaEE Webinar)Roger Kitain
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitIMC Institute
 
Intoduction to Play Framework
Intoduction to Play FrameworkIntoduction to Play Framework
Intoduction to Play FrameworkKnoldus Inc.
 
Developing ASP.NET Applications Using the Model View Controller Pattern
Developing ASP.NET Applications Using the Model View Controller PatternDeveloping ASP.NET Applications Using the Model View Controller Pattern
Developing ASP.NET Applications Using the Model View Controller Patterngoodfriday
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
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
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Arun Gupta
 
Asp.net By Durgesh Singh
Asp.net By Durgesh SinghAsp.net By Durgesh Singh
Asp.net By Durgesh Singhimdurgesh
 
What You Need To Build Cool Enterprise Applications With JSF
What You Need To Build Cool Enterprise Applications With JSFWhat You Need To Build Cool Enterprise Applications With JSF
What You Need To Build Cool Enterprise Applications With JSFMax Katz
 
Asp.Net Ajax Component Development
Asp.Net Ajax Component DevelopmentAsp.Net Ajax Component Development
Asp.Net Ajax Component DevelopmentChui-Wen Chiu
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Jonas Follesø
 
Google Web Toolkits
Google Web ToolkitsGoogle Web Toolkits
Google Web ToolkitsYiguang Hu
 

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

Jsf presentation
Jsf presentationJsf presentation
Jsf presentation
 
JSF 2.0 (JavaEE Webinar)
JSF 2.0 (JavaEE Webinar)JSF 2.0 (JavaEE Webinar)
JSF 2.0 (JavaEE Webinar)
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Intoduction to Play Framework
Intoduction to Play FrameworkIntoduction to Play Framework
Intoduction to Play Framework
 
Developing ASP.NET Applications Using the Model View Controller Pattern
Developing ASP.NET Applications Using the Model View Controller PatternDeveloping ASP.NET Applications Using the Model View Controller Pattern
Developing ASP.NET Applications Using the Model View Controller Pattern
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
 
AJAX
AJAXAJAX
AJAX
 
AJAX
AJAXAJAX
AJAX
 
Java script
Java scriptJava script
Java script
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Jsf intro
Jsf introJsf intro
Jsf intro
 
Asp.net By Durgesh Singh
Asp.net By Durgesh SinghAsp.net By Durgesh Singh
Asp.net By Durgesh Singh
 
What You Need To Build Cool Enterprise Applications With JSF
What You Need To Build Cool Enterprise Applications With JSFWhat You Need To Build Cool Enterprise Applications With JSF
What You Need To Build Cool Enterprise Applications With JSF
 
Asp.Net Ajax Component Development
Asp.Net Ajax Component DevelopmentAsp.Net Ajax Component Development
Asp.Net Ajax Component Development
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
 
Google Web Toolkits
Google Web ToolkitsGoogle Web Toolkits
Google Web Toolkits
 
ajax_pdf
ajax_pdfajax_pdf
ajax_pdf
 
ajax_pdf
ajax_pdfajax_pdf
ajax_pdf
 

Más de IMC Institute

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

Más de IMC Institute (20)

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

Último

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 

Último (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

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 thananum@gmail.com www.facebook.com/imcinstitute www.imcinstitute.com 35