Tuesday, July 10, 2012

OmniFaces 1.1 is released!

Next to some bugfixes and improvements, there are of course several new very useful components and utilities! To name a few toppers which are completely new in the JSF library world: <o:cache>, <o:importConstants> and Html5RenderKit.

Here's a complete overview:

Added in OmniFaces 1.1

  • Rendering specific components by a GET request parameter
  • Form with support to include view parameters in action URL
  • Caching for page fragments with support for scopes, time to live and LRU eviction
  • f:event hook for pre and post invoke action phase
  • GZIP compression filter for HTTP responses
  • of:capitalize() function to capitalize a string
  • HTML5 render kit which adds support for several HTML5 specific attributes to UIForm and UIInput components
  • Importing constant values into EL scope
  • New Messages builder
  • A whole bunch of new utility methods in Faces
  • A new builder in Messages which also allows you to set the message detail
  • New validator which validates if ALL of the given inputs have been filled out
  • Maven integration

Changed in OmniFaces 1.1

  • Support for action components inside o:tree and new TreeModel#remove() and TreeModel#addChildNode() methods
  • Support for web-fragment.xml in FullAjaxExceptionHandler
  • Support to exclude or suppress specific resources in CombinedResourceHandler
  • Support for specific ordering type inside o:validateOrder

Bugfixed in OmniFaces 1.1

  • Broken behaviour inside UIData components in ResetInputAjaxActionListener
  • Incorrect behaviour on synchronous postbacks and NPE on inline scripts in CombinedResourceHandler

New showcase

You can check them all out in the showcase! Note that the showcase web application itself has also retrieved some minor layout improvements, such as a navigation menu hidden behind the header. On for example the <o:cache> page, you can click the "components" header to navigate to other groups and you can click the "cache" header to navigate to other pages in the same group.

4 comments:

Unknown said...

Hi, any interest in a may
* already be disabled, in which case we don't want to enable it if the
*
Boolean curState = (Boolean) c.getAttributes().get("disabled");
if(curState == null || curState == false) {
c.getAttributes().put("UIPanelDisableFlag", true);
c.getAttributes().put("disabled", true);
}
}
else { //
if(c.getAttributes().get("UIPanelDisableFlag") != null) {
c.getAttributes().remove("UIPanelDisableFlag");
c.getAttributes().put("disabled", false);
}
}
}

if(UIComponent.isCompositeComponent(c)) {
c = c.getFacets().get("javax.faces.component.COMPOSITE_FACET_NAME");
}

if (c != null && c.getChildCount() > 0) {
processDisablePanel(c, toDisable);
}
}

}

@Override
public String getFamily() {
// Got to override it but it doesn't get called.
throw new UnsupportedOperationException("Not supported yet.");
}

public boolean isDisabled() {
return (boolean) getStateHelper().eval(PropertyKeys.disabled, false);
}

public void setDisabled(boolean disabled) {
getStateHelper().put(PropertyKeys.disabled, disabled);
}
}


disablePanel

uk.co.myco.component.UIDisablePanel


disabled

Unknown said...

Are you ever going to publish a book about JSF? I'd buy it without thinking twice. :)

marciopd said...

great job, bauke!
This was needed a long time ago!

Unknown said...

Does anyone know when omnifaces 1.2. will be released?