JavaServer Faces Peter Norrhall
JavaServer Faces Internet - Möjliggöraren
JavaServer Faces Internet för användare
JavaServer Faces Internet för utvecklare Det suger!!!
JavaServer Faces Bra för konsulter € € € € € € € € € € € €
JavaServer Faces Dåligt på lång sikt
JavaServer Faces Java GUI Business Data JPA EJB 3 JavaServer Faces GWT
JavaServer Faces
JavaServer Faces Managed Beans SearchBean {... private String searchInput public String search() {... } Managed Beans Action
JavaServer Faces Managed Beans - DI
JavaServer Faces Navigering SearchBean {... String searchInput String search() {... return ”result”; } Managed Beans
JavaServer Faces Navigering
JavaServer Faces Demo
JavaServer Faces JSF - Livscykeln Restore View Apply Request Values Process Validations Update Model Values Process Events Invoke Application Render Response Process Events Process Events Process Events SearchBean {... String searchInput String search() {... } Managed Beans UIViewRoot HtmlForm HtmlMessage HtmlInputText HtmlCommandButton UI Component Tree
JavaServer Faces Restore View UIViewRoot HtmlForm HtmlMessage HtmlInputText HtmlCommandButton UI Component Tree Restore View Apply Request Values Process Validations Update Model Values Process Events Invoke Application Render Response Process Events Process Events Process Events
JavaServer Faces Apply Request Values UIViewRoot HtmlForm HtmlMessage HtmlInputText HtmlCommandButton UI Component Tree Restore View Apply Request Values Process Validations Update Model Values Process Events Invoke Application Render Response Process Events Process Events Process Events Multi*
JavaServer Faces Process Validations SearchBean {... String searchInput String search() {... } Managed Beans UIViewRoot HtmlForm HtmlMessage HtmlInputText HtmlCommandButton UI Component Tree Restore View Apply Request Values Process Validations Update Model Values Process Events Invoke Application Render Response Process Events Process Events Process Events Multi*
JavaServer Faces Update Model Values SearchBean {... String searchInput String search() {... } Managed Beans UIViewRoot HtmlForm HtmlMessage HtmlInputText HtmlCommandButton UI Component Tree Restore View Apply Request Values Process Validations Update Model Values Process Events Invoke Application Render Response Process Events Process Events Process Events Multi*
JavaServer Faces Invoke Application UIViewRoot HtmlForm Restore View Apply Request Values Process Validations Update Model Values Process Events Invoke Application Render Response Process Events Process Events Process Events HtmlMessage HtmlInputText HtmlCommandButton SearchBean {... List result String searchInput String search() {... } Managed BeansUI Component Tree Multi*
JavaServer Faces Render Response Restore View Apply Request Values Process Validations Update Model Values Process Events Invoke Application Render Response Process Events Process Events Process Events UIViewRoot HtmlDataTable UIColumn HtmlInputText UI Component Tree UIColumn HtmlInputText UIColumn HtmlInputText SearchBean {... List result String searchInput String search() {... } Managed Beans
JavaServer Faces Nyheterna i JSF 1.2 < Jsp 2.1< Jsf 1.2
JavaServer Faces Unified EL •#{searchBean.inputString} - deferred •${searchBean.inputString} – immediate •Implicita objekt (application, cookie,...) •Operatorer (+.-,*,/,%,A?B:C,==,!=,...) •Uttryck (#{searchBean.search})
JavaServer Faces Nyheter i Jsf Sammanfattning • icles/J2EE/jsf_12
JavaServer Faces Verktyg Oracle JDeveloper NetBeans Java Studio Creator Exadel Studio JBuilder SAP Developer Studio BEA Workshop IntelliJ IDEA Websphere Studio
JavaServer Faces Komponentbibliotek •JSF •MyFaces Extensions •Apache Tobago/ADF Faces (Oracle) •ICEFaces •Netadvantage for JSF •BackBase •RichFaces (Ajax4JSF)
JavaServer Faces Förändra/skapa komponenter
JavaServer Faces Förändra komponenter •Egenskaper •CSS Restore View Apply Request Values Process Validations Update Model Values Process Events Invoke Application Render Response Process Events Process Events Process Events
JavaServer Faces JSF – Uttöka en komponent Restore View Apply Request Values Process Validations Update Model Values Process Events Invoke Application Render Response Process Events Process Events Process Events public void validate (FacesContext context, UIComponent toValidate, Object value) { String = (String) value; if == -1) { ((UIInput)toValidate).setValid(false); FacesMessage message = new FacesMessage("Invalid "); context.addMessage(toValidate.getClientId(context), message); } }
JavaServer Faces Skapa en komponent
JavaServer Faces JSF och Ajax •Komponentbibliotek •Sun Blueprint AJAX components •Ajax4JSF •Seam Remoting
JavaServer Faces Ajax4Jsf – a4j:support
JavaServer Faces Ajax4Jsf – CommandButton <a4j:commandButton action="#{searchBean.handleSearch}” reRender=”tblSearchResult, txtSearchTerm” value="#{bundle['search.search']}" styleClass="html-text"/>
JavaServer Faces Ajax4Jsf •
JavaServer Faces IceFaces
JavaServer Faces JSF Ramverk •Apache Shale vs JBoss Seam – Dialog Manager (Conversation) – Validation – Remoting (Ajax) – Clay (Non-Jsp) –...
JavaServer Faces JBoss Seam SearchBean {... List result String searchInput String search() {... } public class SearchBean implements String searchInput String search() {... } EJB 3
JavaServer Faces Annoteringar – Bokmärken •A RESTful framework public class CategoryBean String public String getCategory() { category = em.find(Category.class, catId); }
JavaServer Faces JSF - Bokmärken category se.movlin.jsf.pagebeans.CategoryBean request catId java.lang.String #{param.catId} public class CategoryBean { private String catId; public void setCatId(String catId) { this.catId = catId; category = em.find(Category.class, catId); } }
JavaServer - Validering public class public String get () { return ; } public void set (String ) { this. = ; } }
JavaServer Faces Seam – Ajax public interface Search public String suggest(String name); public class SearchAction implements Search { public String suggest(String name) { String suggestion = null;... return suggestion; } // get the remote Search var search = Seam.Component.getInstance(”search”); function suggest(name) { search.suggest(name, suggestCallback); } function suggestCallback(suggestion) { form.suggestion.value = suggestion; }
JavaServer Faces JBoss Seam •Fogar samman JSF och EJB 3 (Web Beans) – Ut med XML-konfig •AJAX för en bättre värld •Conversation – Stöd för tillståndsfulla multipla ”konversationer”
JavaServer Faces Seam – Web Beans •Web Beans JSR 299
JavaServer Faces Facelets
JavaServer Faces Facelets - Våga Vägra JSP!
JavaServer Faces Facelets - Mallbaserat bottom top rightcontainer template.xhtml.top{ margin: 0px; padding: 0px; height: 58px; width: 770px; font: 20px Verdana, Tahoma, Arial text-decoration-none }.right {... }.bottom {... }.container {... } template.css
JavaServer Faces Produktkatalog ShoppingCart/CompanyInfo (bottom) Menu (top) Branding (right) container </ui:insert catalog_template.xhtml category.xhtml product.xhtml
JavaServer Faces Produktkatalog catalog_template.xhtml product.xhtml
JavaServer Faces Facelets – enklare att •Skapa egna komponenter •Skapa valideringsfunktioner •Skapa ”taggar” •Skicka parametrar mellan sidor •Exadel Studio
JavaServer Faces Prestanda
JavaServer Faces State – Client vs Server Web.xml javax.faces.STATE_SAVING_METHOD client jsfsearch.jsp
JavaServer Faces Cache is King <s:cache key=”art_93682” enabled=”true”
JavaServer Faces JSF 2.0 •Web Beans JSR JBoss •Oracles JSR för att uttöka designtime stödet i GUIbyggare • ?linkhttp:// ?link
JavaServer Faces Summering