JSF 2.2 ja kunnon HTML-yhteensopivat templatet

No niin, JavaServer Faces on elänyt aika elinkaaren. Ensimmäisessä versiossaan siinä käytettiin JSP tekniikkaa sivupohjana, ja se mahdollisti hirvitykset kuten:

<h2>Categories</h2>
<ul>
 <% 
 ArrayList<Category> categories = Category.selectAll();
 for (int i = 0; i < categories.size(); i++) {
 %>
 <li>
 <h:form>
 <h:inputHidden binding="#{BookCategories.bookBean.categoryId}" value="<%= categories.get(i).getId() %>" />
 <h:commandLink action="#{BookCategories.filterByCategory}">
 <h:outputText value="<%= categories.get(i).getName() %>" />
 </h:commandLink>
 </h:form>
 </li>
 <% } %>
</ul>

Joka ei lisäksi tietysti edes toimi! Mutta vaikka toimisikin, antaa myös sydänkohtauksen mille hyvänsä HTML editorille (ja Web Developer rassukalle joka yrittää saada sivua näyttämään hyvältä selaimessa)

JSF 2 paransi hieman asiaa ottamalla faceletit käyttöön, mutta edelleen sivuleiska on täynnään kaikenlaista ei-html standardimaista puppua:

    	<h1>JSF 2 dataTable sorting example</h1>
    		<h:dataTable value="#{order.orderList}" var="o"
    			styleClass="order-table"
    			headerClass="order-table-header"
    			rowClasses="order-table-odd-row,order-table-even-row"
    		>

    		<h:column>
    			<f:facet name="header">
    			   <h:commandLink action="#{order.sortByOrderNo}">
    				Order No
    			   </h:commandLink>
    			</f:facet>
    			#{o.orderNo}
    		</h:column>

    		<h:column>
    			<f:facet name="header">
    				Product Name
			</f:facet>
    			#{o.productName}
    		</h:column>

    		<h:column>
    			<f:facet name="header">Price</f:facet>
    			#{o.price}
    		</h:column>

    		<h:column>
    			<f:facet name="header">Quantity</f:facet>
    			#{o.qty}
    		</h:column>

    	    </h:dataTable>

Samaan aikaan muut frameworkit kuten Wicket tekevät puhtaita HTML sivuleiskoja. Nyt JSF 2.2:sen myötä näyttäisi sama piirre olevan tulossa myös Java EE alustan web-standardikehikkoon JSF:ään, tässä maistiainen tulevasta:

 

< !DOCTYPE html>
< html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:jsf="http://java.sun.com/jsf" xmlns:f="http://java.sun.com/jsf/core">
 < head jsf:id="head">
 < title>Putting it all together < /title>
 < script jsf:target="body" jsf:name="js.js"/>
 < link jsf:name="css.css" rel="stylesheet" type="text/css" />
 < /head>
 < body jsf:id="body">
 < form jsf:id="form" jsf:prependId="false">
 < label jsf:for="name">Name < /label>
 < input jsf:id="name" type="text" jsf:value="#{complex.name}">
 < f:ajax execute="@this" render="progress"/>
 < /input>
 < label jsf:for="tel">Tel < /label>
 < input jsf:id="tel" type="tel" jsf:value="#{complex.tel}">
 < f:ajax execute="@this" render="progress"/>
 < /input>
 
 < label jsf:for="email">Email < /label>
 < input jsf:id="email" type="email" jsf:value="#{complex.email}">
 < f:ajax execute="@this" render="progress"/>
 < /input>
 
 < label for="progress">Progress < /label>
 < progress jsf:id="progress" max="3">#{complex.progress} of 3 < /progress>
 
 < /form>
 < /body>
< /html>

 

 

 

Pieni yksityiskohta? Yep, mutta ne ratkaisevat. Itse pidän aina siitä kun asiat menevät yksinkertaisempaan suuntaan:

Java on ollut aina hyvä varuste raskaisiin isoihin yrityssovelluksiin (joskin tästä voidaan käydä uskonsotia, mutta uskottavia referenssejä on riittävästi Javan puolesta 😉 – mutta viime vuosina sillä on voinut näperrellä nopeammin, halvemmin, ketterämmin myös pienempiä start-up juttuja uskottavalla tavalla.

Jos ensimmäisen prototyypin saa käyntiin tunneissa tai minuuteissa viikkojen sijaan, saa aiemmin arvokasta palautetta, ja etenkin ketterissä hankkeissa tämä on elintärkeää.

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s