ebook img

Practical JSF in Java EE 8 PDF

471 Pages·2018·9.33 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Practical JSF in Java EE 8

Practical JSF in Java EE 8 Web Applications in Java for the Enterprise — Michael Müller Practical JSF in Java EE 8 Web Applications in Java for the Enterprise Michael Müller Practical JSF in Java EE 8: Web Applications in Java for the Enterprise Michael Müller Brühl, Nordrhein-Westfalen, Germany ISBN-13 (pbk): 978-1-4842-3029-9 ISBN-13 (electronic): 978-1-4842-3030-5 https://doi.org/10.1007/978-1-4842-3030-5 Library of Congress Control Number: 2018941459 Copyright © 2018 by Michael Müller This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Steve Anglin Development Editor: Matthew Moodie Coordinating Editor: Mark Powers Cover designed by eStudioCalamar Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit http://www.apress.com/ rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book's product page, located at www.apress.com/9781484230299. For more detailed information, please visit www.apress.com/source-code. Printed on acid-free paper To my wife Claudia and my kids: Thank you for your patience during night-writing and other long sessions. I love you. Table of Contents About the Author .....................................................................................................xv About the Technical Reviewer ...............................................................................xvii Acknowledgments ..................................................................................................xix Preface ...................................................................................................................xxi Part I: TinyCalculator ......................................................................................1 Chapter 1: TinyCalculator .........................................................................................3 Creating the Application ����������������������������������������������������������������������������������������������������������������3 Working with TinyCalculator �������������������������������������������������������������������������������������������������������14 Managed Beans ���������������������������������������������������������������������������������������������������������������������14 The Page ��������������������������������������������������������������������������������������������������������������������������������18 The Relationship Between Code and View ����������������������������������������������������������������������������19 Summary�������������������������������������������������������������������������������������������������������������������������������������20 Chapter 2: Foundations ..........................................................................................21 Web Applications �������������������������������������������������������������������������������������������������������������������������21 HTTP ��������������������������������������������������������������������������������������������������������������������������������������������22 HTML �������������������������������������������������������������������������������������������������������������������������������������������24 CSS ���������������������������������������������������������������������������������������������������������������������������������������������26 JavaScript �����������������������������������������������������������������������������������������������������������������������������������27 Java���������������������������������������������������������������������������������������������������������������������������������������������28 Maven �����������������������������������������������������������������������������������������������������������������������������������������29 Selenium and Arquillian ��������������������������������������������������������������������������������������������������������������29 Servlet �����������������������������������������������������������������������������������������������������������������������������������������29 Deployment ���������������������������������������������������������������������������������������������������������������������������������33 Summary�������������������������������������������������������������������������������������������������������������������������������������33 v Table of ConTenTs Chapter 3: JavaServer Faces ..................................................................................35 View Definition Language �����������������������������������������������������������������������������������������������������������36 Web vs� Traditional Application ���������������������������������������������������������������������������������������������������36 JSF Lifecycle Overview ���������������������������������������������������������������������������������������������������������������39 JSF Namespaces and Tags ���������������������������������������������������������������������������������������������������������41 Component Tree ��������������������������������������������������������������������������������������������������������������������������43 Navigation �����������������������������������������������������������������������������������������������������������������������������������47 Summary�������������������������������������������������������������������������������������������������������������������������������������48 Chapter 4: Expression Language ............................................................................49 Unified Expression Language ������������������������������������������������������������������������������������������������������49 Value Expression �������������������������������������������������������������������������������������������������������������������������51 Operators �������������������������������������������������������������������������������������������������������������������������������51 Dot and Square Bracket���������������������������������������������������������������������������������������������������������53 Method Expression ���������������������������������������������������������������������������������������������������������������������53 Implicit Objects ���������������������������������������������������������������������������������������������������������������������������53 Summary�������������������������������������������������������������������������������������������������������������������������������������55 Chapter 5: HTML-Friendly Markup..........................................................................57 HTML-Friendly TinyCalculator �����������������������������������������������������������������������������������������������������57 Summary�������������������������������������������������������������������������������������������������������������������������������������60 Chapter 6: Configuration Files ................................................................................61 pom�xml ��������������������������������������������������������������������������������������������������������������������������������������61 web�xml���������������������������������������������������������������������������������������������������������������������������������������62 faces-config�xml �������������������������������������������������������������������������������������������������������������������������64 beans�xml������������������������������������������������������������������������������������������������������������������������������������65 persistence�xml ���������������������������������������������������������������������������������������������������������������������������65 glassfish-resources�xml ��������������������������������������������������������������������������������������������������������������65 glassfish-web�xml �����������������������������������������������������������������������������������������������������������������������66 Other Files �����������������������������������������������������������������������������������������������������������������������������������67 Summary�������������������������������������������������������������������������������������������������������������������������������������67 vi Table of ConTenTs Chapter 7: Testing with Selenium ...........................................................................69 Selenium Overview ���������������������������������������������������������������������������������������������������������������������69 Preparing TinyCalculator �������������������������������������������������������������������������������������������������������������70 Creating the Test �������������������������������������������������������������������������������������������������������������������������71 Unit Test without Selenium ���������������������������������������������������������������������������������������������������������80 Summary�������������������������������������������������������������������������������������������������������������������������������������82 Chapter 8: TinyCalculator Recap ............................................................................83 Part II: Books ................................................................................................85 Chapter 9: Preparing for Java EE 8.........................................................................87 Current Evolution ������������������������������������������������������������������������������������������������������������������������87 Upgrade the Application Server ��������������������������������������������������������������������������������������������������88 Payara Server������������������������������������������������������������������������������������������������������������������������������90 Summary�������������������������������������������������������������������������������������������������������������������������������������91 Chapter 10: Introducing the Books Application ......................................................93 Books Requirements �������������������������������������������������������������������������������������������������������������������93 Development Order ���������������������������������������������������������������������������������������������������������������������95 Summary�������������������������������������������������������������������������������������������������������������������������������������97 Chapter 11: Starting the Books App .......................................................................99 Page Layout ��������������������������������������������������������������������������������������������������������������������������������99 HTML Structure �������������������������������������������������������������������������������������������������������������������100 Basic Styling with CSS ��������������������������������������������������������������������������������������������������������103 Design First Data Model ������������������������������������������������������������������������������������������������������������113 First Dialog Box (Repeating Structure) ��������������������������������������������������������������������������������������115 Summary�����������������������������������������������������������������������������������������������������������������������������������123 Chapter 12: Java Persistence API .........................................................................125 Entities ��������������������������������������������������������������������������������������������������������������������������������������125 Persistence Unit ������������������������������������������������������������������������������������������������������������������������130 Data Source �������������������������������������������������������������������������������������������������������������������������135 Entity Manager ��������������������������������������������������������������������������������������������������������������������137 vii Table of ConTenTs Service Class ����������������������������������������������������������������������������������������������������������������������������137 Using the CategoryService/Injection �����������������������������������������������������������������������������������������142 Summary�����������������������������������������������������������������������������������������������������������������������������������144 Chapter 13: JSF Templating ..................................................................................145 Templating Books ����������������������������������������������������������������������������������������������������������������������145 Summary�����������������������������������������������������������������������������������������������������������������������������������151 Chapter 14: Going International ...........................................................................153 Internationalization and Localization ����������������������������������������������������������������������������������������153 Welcome Page ��������������������������������������������������������������������������������������������������������������������������154 Message Bundle ������������������������������������������������������������������������������������������������������������������154 Naive Welcome Page Implementation ���������������������������������������������������������������������������������162 Use Paragraphs and <ui:repeat> ����������������������������������������������������������������������������������������164 Language Switcher �������������������������������������������������������������������������������������������������������������������166 Localized Content ����������������������������������������������������������������������������������������������������������������������168 Preparing the Administer Area ��������������������������������������������������������������������������������������������169 Include into Page �����������������������������������������������������������������������������������������������������������������169 Common Navigation ������������������������������������������������������������������������������������������������������������172 Topics ����������������������������������������������������������������������������������������������������������������������������������173 Enhancing the Category Entity ��������������������������������������������������������������������������������������������185 The Category Translation Page ��������������������������������������������������������������������������������������������191 Summary�����������������������������������������������������������������������������������������������������������������������������������194 Chapter 15: Bean Validation .................................................................................195 Book Entity ��������������������������������������������������������������������������������������������������������������������������������196 Book Editor ��������������������������������������������������������������������������������������������������������������������������������198 Summary�����������������������������������������������������������������������������������������������������������������������������������200 Chapter 16: Contexts and Dependency Injection ..................................................201 From new() to CDI ���������������������������������������������������������������������������������������������������������������������201 Summary�����������������������������������������������������������������������������������������������������������������������������������204 viii Table of ConTenTs Chapter 17: Conversation Scope ..........................................................................205 Multi-page Editor ����������������������������������������������������������������������������������������������������������������������205 POST and GET Navigation ���������������������������������������������������������������������������������������������������������209 Begin and End the Conversation �����������������������������������������������������������������������������������������������210 Summary�����������������������������������������������������������������������������������������������������������������������������������210 Chapter 18: Links..................................................................................................211 Internal Reviews �����������������������������������������������������������������������������������������������������������������������211 External Reviews ����������������������������������������������������������������������������������������������������������������������213 JSF Links�����������������������������������������������������������������������������������������������������������������������������������215 commandLink ����������������������������������������������������������������������������������������������������������������������215 link ���������������������������������������������������������������������������������������������������������������������������������������215 outputLink ���������������������������������������������������������������������������������������������������������������������������216 Choosing the Right Link �������������������������������������������������������������������������������������������������������216 Draw the Conclusion �����������������������������������������������������������������������������������������������������������219 Summary�����������������������������������������������������������������������������������������������������������������������������������220 Chapter 19: Responsive Design ............................................................................223 Making Books Responsive ��������������������������������������������������������������������������������������������������������223 Responsive Pixel Layouts ����������������������������������������������������������������������������������������������������������236 Calculating Sizes �����������������������������������������������������������������������������������������������������������������������237 Mobile-First and Desktop-First �������������������������������������������������������������������������������������������������238 Summary�����������������������������������������������������������������������������������������������������������������������������������239 Chapter 20: Summary and Perspective ................................................................241 Part III: Intermezzo .....................................................................................243 Chapter 21: Intermezzo ........................................................................................245 Chapter 22: JSF Lifecycle Revisited .....................................................................247 ix Table of ConTenTs Chapter 23: Repetitive Structures ........................................................................249 Tag Handler vs� Component ������������������������������������������������������������������������������������������������������249 Performance Issues ������������������������������������������������������������������������������������������������������������������254 Summary�����������������������������������������������������������������������������������������������������������������������������������262 Part IV: Alumni ............................................................................................263 Chapter 24: Alumni ...............................................................................................265 Preparing the Application ����������������������������������������������������������������������������������������������������������265 Registration Form ���������������������������������������������������������������������������������������������������������������������270 Summary�����������������������������������������������������������������������������������������������������������������������������������274 Chapter 25: Validation ..........................................................................................275 Bean Validation �������������������������������������������������������������������������������������������������������������������������275 Creating a Customized Message �����������������������������������������������������������������������������������������279 Details of Customized Messages �����������������������������������������������������������������������������������������281 Null Handling �����������������������������������������������������������������������������������������������������������������������282 Validation Method ���������������������������������������������������������������������������������������������������������������������283 Validator ������������������������������������������������������������������������������������������������������������������������������������284 Multi-Component Validation ������������������������������������������������������������������������������������������������������285 Self-Made ���������������������������������������������������������������������������������������������������������������������������������291 Summary�����������������������������������������������������������������������������������������������������������������������������������293 Chapter 26: AJAX Components .............................................................................295 Using AJAX for Immediate Feedback ����������������������������������������������������������������������������������������295 Summary�����������������������������������������������������������������������������������������������������������������������������������300 Chapter 27: Building Composite Components ......................................................301 Transform into a Composition ���������������������������������������������������������������������������������������������������301 Enable Child Element for the Composition ��������������������������������������������������������������������������������305 Pass In Validation Method ���������������������������������������������������������������������������������������������������������308 Ubiquitous Input Component �����������������������������������������������������������������������������������������������������310 Summary�����������������������������������������������������������������������������������������������������������������������������������312 x

Description:
Master the Java EE 8 and JSF (JavaServer Faces) APIs and web framework with this practical, projects-driven guide to web development. This book combines theoretical background with a practical approach by building four real-world applications. By developing these JSF web applications, you'll take a
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.