May 01

Build PrimeFaces Online

PrimeFaces Community member Peter Hendriks has created a great tool to build PrimeFaces from trunk source. With just one click, you can build the very latest PrimeFaces and download it as a jar. We also have plans to bring jenkins back but that’s for future.

http://www.case1.nl/pfnb/

Thank you Peter for taking the time to do this and share with the rest of the community!

Posted in PrimeFaces | 9 Comments
Apr 25

Menu Enhancements

PrimeFaces 3.3 gets major menu component enhancements, most of the work is related to internal apis and refactoring. We’ve unified repetitive behaviors like tiered menus, overlay positioning by introducing client side inheritance.

External changes are;

- Tiered and Slide menu types have now their own components named tieredMenu and slideMenu.
- Added autoDisplay mode to tiered menus, by default submenus are displayed with mouseover, setting autoDisplay mode to false requires a click.
- Tiered Context Menus are now supported.
- Overlay slide and tiered menus are now supported.
- SlideMenu is a complete rewrite of menu with slide type.
- Menus are now not hidden when mouse is out from the submenus, we’ve aligned the behavior with OS menus and menubars to make this closer to common user experience.

Check out PrimeFaces Labs to see these in beta action!

http://www.primefaces.org/showcase-labs/ui/home.jsf

For those who wonder the release date of 3.3… let’s say when it is done ;) We are very busy with maintenance!

Posted in PrimeFaces | 13 Comments
Apr 10

Advanced AutoComplete Tooltip

PrimeFaces AutoComplete is an ajax input suggest component that is far more advanced than other similar JSF components and JS widgets you can find in JS libraries. It supports single, multiple selection, ajax behaviors, custom content, pojo support and more.

An Enterprise User of PrimeFaces required another sponsored feature to autocomplete; Displaying custom content as tooltip on mouseover of suggested items. After giving a though on how to do it, we came up with something like this;

Content of the tooltip is provided by itemtip facet. This is still beta code but cool enough to present.

See PrimeFaces Labs for the live demo!

Hint: Start with “A” :)

Posted in PrimeFaces | 15 Comments
Apr 09

Remaining Chars for InputTextarea

PrimeFaces InputTextarea extends standard inputTextarea component with theming, autogrow and cross browser maxlength constraint. Latest addition to this extension set is displaying number of characters left during typing.

To make things more flexible (as usual in PrimeFaces), we have added two new attributes;

- counter: Id of the output component to display remaining characters text.
- counterTemplate: Customizable template text like “{0} chars remaining! Use it wisely”

Check out PrimeFaces Labs to try it out!

Posted in PrimeFaces | 8 Comments
Apr 04

Star Rating Reimplemented

PrimeFaces Star Rating was based on a 3rd party plugin until now and we’ve decided to come up with our own for 3.3.

While on it, we’ve added a couple of more handy features;

- Improved quality of star icons
- Removed hover as it might be confusing
- Added readonly rendering, improved disabled rendering
- Added style and styleClass options and migrated css classes to PF conventions
- In addition to already existing “rate” ajax behavior event, “cancel” event is now also available.
- Added cancel attribute to define the visibility of cancel icon
- Fixed various problems regarding validations (e.g. required validation was failing)

Update demo is available at PrimeFaces 3.3 Labs.

PrimeFaces : Best JSF Component Suite on Earth until Chuck Norris creates one.

Posted in PrimeFaces | 3 Comments
Apr 03

FacesMessage Enhancements

PrimeFaces 3.3 brings handy features regarding displaying facesmessages. These features were already available in PrimeFaces Extensions Project with a different implementation and there was a popular community request to promote these ideas to PrimeFaces. Also during a team meeting last week, our consultants mentioned that they needed at least two of these during their work onsite for a client where they provide onsite assistance on PrimeFaces. Long story short, here are the 3 additions;

Targetable Messages

There maybe times where you need to target a FacesMessage to a specific component, for example suppose you have p:growl and p:messages on same page and you need to display some messages on growl, some on p:messages. We have added grouping defined via for attribute to implement these;

<p:messages for="somekey" />
<p:growl for="anotherkey" />
<p:growl globalOnly="true" />
context.addMessage("somekey", new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample info message", "PrimeFaces Rocks"));
context.addMessage("somekey", new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample info message", "Always bet on Prime"));

context.addMessage("anotherkey", new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample info message", "PrimeFaces is developed by Chuck Norris"));

context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample warn message", "Optimus Prime will be back!"));

So first two messages will be displayed by messages, second one by first growl and last with second growl.

Severity Levels

Using severity attribute of messages components, you can defined which severities can be displayed by the component. So for instance, we are now able to display errors on messages and infos on a growl that fades out.

<p:messages severity="error" />
<p:growl severity="info, warn" />
<p:growl />  //default

Escaping

Until now message components, escape the html content in FacesMessage summary and detail, just set escape to false to display html inside messages.

context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample warn message", "PrimeFaces is developed by <strong>Chuck Norris!</strong>"));
<p:messages escape="false" />

That’s it! Hope you find these features handy, we’ve already started using targeting and severity levels in a project!

Posted in PrimeFaces | 13 Comments
Apr 02

PrimePartners

PrimeFaces is becoming a franchise with a huge user base world wide and to improve our commercial services all around the world, we are glad to announce the new partnership model.

A partner of Prime Teknoloji is a firm with proven JSF-PrimeFaces expertise who can provide the services below;

Training

Delivered by acknowledged trainers using official material created by Prime Teknoloji.

Certification

Provide official trainee certificates on behalf of Prime Teknoloji.

Consulting

Onsite consulting regarding application development with JSF and PrimeFaces.

Enterprise Support

Act as a reseller of PrimeFaces Enterprise Support Package, benefit from reseller fees.

Check out Partners Page on PrimeFaces.org to learn more about this and view the list of current partners.

Posted in PrimeFaces | 2 Comments
Mar 29

More DataTable Hooks

A good component should hide the complexity but keep the flexibility, this is one of the design goals of PrimeFaces.

This is a follow-up post to DataTable Hooks. To start with, see the pagination sample at the mentioned entry.

With each PrimeFaces iteration we are seeing more demand from the community regarding these hooks and for 3.3 we’ve added the following to the datatable;

- rowSelectRadio
- rowSelectCheckbox
- rowUnselectCheckbox
- rowDblselect

In addition to the already existing;

- page
- sort
- filter
- rowSelect
- rowUnselect
- toggleSelect
- colResize
- colReorder

A common request was seeing the row details with a single click and navigating to another page with double click on a row, this is now possible with rowSelect and rowDblselect.

Posted in PrimeFaces | 4 Comments
Mar 22

jQuery Selector API meets JSF

PrimeFaces 3.3 development has begun fast and furious! Starting with the new partial submit feature, we are glad to introduce another extension feature to Ajax Framework called PrimeFaces Selector API in short PFS.

PFS integrates jQuery Selector API with JSF component referencing model, so for partial update and process, referencing JSF components can be done using jQuery Selector API instead of regular JSF model which is based on UIComponent.findComponent.

So how does it work? Syntax is @(selector), here are a couple of examples;

Update all forms

update="@(form)"

Update first form

update="@(form:first)"

Update all components that has “mystyle” style class

update="@(.mystyle)"

Update and process all inputs

update="@(:input)" process="@(:input)"

Update all datatables

update="@(.ui-datatable)"

Process input components inside panel and update panel

process="@(.ui-panel :input)" update="@(.ui-panel)"

Process input components but not select components

process="@(:input:not(select)))"

Process input components that are disabled

process="@(:input:disabled)"

Sky is the limit with this feature, see the jQuery Selector API docs for more information.

Please note that PFS is an additional feature, backward compatible and can be used with regular referencing, so following is also possible;

update="compId :form:compId @(:input)"

In summary, PFS provides an alternative, flexible, grouping based approach to reference components to partially process and update. There is less CPU server load compared to regular referencing because JSF component tree is not traversed on server side to find a component and figure out the client id as PFS is implemented on client side by looking at dom tree. Another advantage is avoiding naming container limitations, just remember the times you’ve faced with cannot find component exception since the component you are looking for is in a different naming container like a form or a datatable. PFS can help you out in tricky situations by following jQuery’s “write less do more” style.

Always Bet On Prime!

Posted in Uncategorized | 20 Comments