Mar 20

PrimeFaces Mobile 0.9.2 Released

PrimeFaces Mobile is back with a new release!!! 0.9.2 brings bug fixes, enhancements and  new features.

  • Transition effects (e.g. pop, slide, flip, turn, flow …)
  • Major maintenance on ajax updates in mobile views
  • Various bug fixes
  • Extension points to jQuery Mobile
  • Mini form controls
  • Mobile renderers for selectManyCheckbox and selectOneRadio

Downloads

Please see downloads page for download instructions. Notice that artifact id has been changed to primefaces-mobile.

Documentation

Mobile User’s Guide is updated to cover 0.9.2 and reached 40+ pages.

Roadmap

Next planned release is 1.0. Major feature is loading views with ajax to increase page load for mobile devices, in addition we’ll implement feature requests from PrimeFaces Community.

Posted in PrimeFaces | 9 Comments
Mar 14

Lightweight Requests with PartialSubmit

Core JSF Ajax implementation and PrimeFaces serializes the whole form to build the post data in ajax requests so the same data is posted just like in a non-ajax request. This has a downside in large views where you only need to process/execute a minor part of the view. Assume you have a form with 100 input fields, there is an input field with ajaxbehavior attached processing only itself(@this) and then updates another field onblur. Although only a particular input field is processed, whole form data will be posted with the unnecessary information that would be ignored during server side processing but consume resources.

Upon request of an Enterprise PrimeFaces User who have large JSF pages and trying to reduce the network load, we’ve added partialSubmit feature to PrimeFaces Ajax extensions. This attribute is available in p:ajax and ajax enabled components like buttons, links and more. When enabled and partial processing is defined, only the partially processed components are added to the post data and rest in the same form are ignored. Here is an example;

<h:form id="form">

    <p:log />

    <h:panelGrid columns="5" cellpadding="5">
        <h:outputLabel for="name" value="Name:" style="font-weight:bold"/>

        <p:inputText id="name" value="#{pprBean.firstname}" />

        <p:commandButton value="Default" update="display" />

        <p:commandButton value="Partial" update="display" partialSubmit="true" process="name"/>

        <h:outputText value="#{pprBean.firstname}" id="display" />
    </h:panelGrid>

    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputText />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <p:inputTextarea />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />
    <h:selectOneMenu />
    <br />

</h:form>

Compare the post data;

Default

javax.faces.partial.ajax=true&javax.faces.source=form%3Aj_idt17&javax.faces.partial.execute=%40all
&javax.faces.partial.render=form%3Adisplay&form%3Aj_idt17=form%3Aj_idt17&form=form&form%3Aname=
&form%3Aj_idt18=&form%3Aj_idt125=&form%3Aj_idt19=&form%3Aj_idt21=&form%3Aj_idt23=&form%3Aj_idt25=
&form%3Aj_idt27=&form%3Aj_idt29=&form%3Aj_idt31=&form%3Aj_idt33=&form%3Aj_idt35=&form%3Aj_idt37=
&form%3Aj_idt39=&form%3Aj_idt41=&form%3Aj_idt43=&form%3Aj_idt45=&form%3Aj_idt47=&form%3Aj_idt61=
&form%3Aj_idt63=&form%3Aj_idt65=&form%3Aj_idt67=&form%3Aj_idt69=&form%3Aj_idt71=&form%3Aj_idt73=
&form%3Aj_idt75=&form%3Aj_idt77=&form%3Aj_idt79=&form%3Aj_idt81=&form%3Aj_idt83=&form%3Aj_idt85=
&form%3Aj_idt87=&form%3Aj_idt89=&form%3Aj_idt91=&form%3Aj_idt93=
&javax.faces.ViewState=140664906657838629%3A-6619052145563305617

Partial

javax.faces.partial.ajax=true&javax.faces.source=form%3Aj_idt124&javax.faces.partial.execute=form%3Aname
&javax.faces.partial.render=form%3Adisplay&form%3Aj_idt124=form%3Aj_idt124&form%3Aname=
&javax.faces.ViewState=140664906657838629%3A-6619052145563305617

End result is same however partialSubmit is significantly more lightweight and difference becomes larger as the form grows with more components. Check out the live demo of partialSubmit and compare the post data displayed in Log components. Once our implementation is solid and stable we have plans to enable partialSubmit by default.

This is one of the 2 new ajax features of 3.3 we’ve mentioned before, stay tuned for the second one. It’s really cool!

Update: partialSubmit will be true by default if there are partially processed components defined.

Posted in PrimeFaces | 16 Comments
Mar 12

PrimeFaces 3.2 Final Released

One week after the release candidate, PrimeFaces 3.2 Final is released. In total there are 9 filed improvements over the RC that are mostly minor defect fixes. See the full changelog for more information and 3.2.RC1 announcement for the detailed coverage of changes between 3.1 and 3.2.

Downloads

To try out the new release check out downloads section.

Documentation

PrimeFaces User’s Guide is updated to cover 3.2 Edition and reached 460 pages. See documentation page to download the new guide.

RoadMap

PrimeFaces RoadMap is crystal clear, we are now focused on PrimeFaces Mobile 0.9.2 release that will bring new features, enhancements and bug fixes. After 0.9.2 development which is planned to be 2 weeks we’ll get back to PrimeFaces 3.3. Major features of 3.3 would be the enhanced PrimeFaces Push, implementation of popular feature requests and two cool features to ajax framework.

Always Bet on Prime!

Optimus Prime

Posted in Uncategorized | 19 Comments
Mar 07

Introducing PrimeFaces Extensions

PrimeFaces Extensions is a community driven project led by Oleg Varaksin (oleg) and Thomas Andraschko (zoigl) who are power users and well known members in PrimeFaces Community. Extensions project contains various components that are not available in PrimeFaces nor in any other JSF UI library, extensions to existing features, converters, validators, useful tools like maven plugins and more.

Here is a cool video trailer;


PrimeFaces Extensions 0.3.0 Trailer from Mauricio Fenoglio on Vimeo.

As this is the official extensions project, have no hesitation to use this great work! It is developed in the same manner as in PrimeFaces with same underlying apis. We as PrimeFaces Team are constantly in cooperation with the extensions team about PrimeFaces Core and Extensions to exchange feedback.

Project Resources

Posted in PrimeFaces | 20 Comments
Mar 05

PrimeFaces 3.2.RC1 Unleashed

Prime Teknoloji is pleased to announce the 3.2.RC1 release of the leading JSF UI Framework, PrimeFaces!!! Compared to the previous major release 3.1, there are over 80  filed improvements, new components, reimplemented ones, major maintenance, improved accessibility, important internal enhancements and more.

Full ChangeLog

3.2 release is quite balanced regarding new features and bug fixes. Please see full changelog for detailed information.

Brand New Components

Reimplemented Components

Following components are rewritten as native widgets instead of integrating 3rd parties.

New Features

Maintenance

3.2 brings better quality with 35+ filed defect fixes. With our selenium test suite, we’re able to catch regression issues before they go in releases. PrimeFaces QA team is also currently working on a new Arquillan-JSFUnit test suite. With monthly release cycle, we’re aiming to fix any bugs quickly and deliver them back to the community.

Backward Compatibility

There are no major changes in 3.2 except slight differences in reimplemented components.

  • Growl now uses css to display the severity icons instead of the previous *Icon attributes.
  • Password component sets feedback mode to false by default.
  • Incell editing datatable requires editable attribute to be set true.
  • ProgressBar’s oncomplete attribute is removed in favor of complete ajax behavior.

New Widget Architecture

We’ve rewritten our client side widget architecture to get proper inheritance and callbacks to widget lifecycle. Prior to 3.2 when a component was updated with ajax, the corresponding widget was reinitialized, with our new design widgets just refresh themselves leading to improved memory usage on the browser and much cleaner code. Please note that this is an internal change and has no effect regarding the usage of the components.

Themes

PrimeFaces Themes also get an update with the new 1.0.4 release, most of the themes are unchanged and some get minor color improvements.

Documentation

User’s Guide for 3.2 will be available next week along with 3.2 Final release.

Download

Visit PrimeFaces.org downloads section to try out the release candidate of 3.2.

Always bet on Prime!

Optimus Prime and All the Autobots in PrimeFaces Team

Posted in PrimeFaces | 9 Comments
Mar 02

ui:repeat with ajax pagination

Have you ever needed ajax pagination support to ui:repeat component? Well, we did when working on a client’s application. The requirement was displaying data with pagination support and no specific markup like tr, td, li. DataTable, DataGrid and DataList components render each data in collection with specific markup separators so we needed our own custom display similar to ui:repeat. As ui:repeat has no paginator, we’ve enhanced PrimeFaces DataList with a new type called “none”.

Content is up to the page author to define which brings full control over the generated markup. As datalist also provides ajax pagination, header facet and more, it is possible to further customize the content. One pending enhancement is adding varStatus option.

See PrimeFaces Labs for a live demo!

Posted in PrimeFaces | 5 Comments
Feb 29

Spinner Accessibility

Accessibility features in PrimeFaces are getting better with each iteration. A case in point is spinner, we’ve added screen reader support with aria roles and state attributes in 3.1 and for 3.2, spinner gets improved keyboard and mouse support. The value of spinner now can be changed with;

  • Clicking the spin buttons with mouse.
  • Tabbing to the spinner and up-down arrow keys via keyboard.
  • Moving the cursor on the spinner and scrolling with mousewheel.

3.2 adds similar accessibility features to other components as well. See the spinner demo for live action.

Posted in PrimeFaces | 2 Comments
Feb 29

ScrollTo a Component After Ajax Update

For long pages that scroll, ajax updates might be confusing to the users as the updated part may not be visible in viewport. To get the user’s attention, it would be nice to scroll to the updated component. PrimeFaces 3.2 provides a handy utility to implement this;

RequestContext.getCurrentInstance().scrollTo('form:panel');

When the panel component is updated, PrimeFaces will scroll to the component with a smooth animation.

Check out the live demo at PrimeFaces Labs!

Posted in PrimeFaces | 2 Comments