OmniFaces 5.1 is released! This release brings two new additions and a handful of fixes.
<dependency>
<groupId>org.omnifaces</groupId>
<artifactId>omnifaces</artifactId>
<version>5.1</version>
</dependency>
As per What's new in OmniFaces? in the showcase:
New: <o:compositeConverter>
Have you ever needed to chain multiple converters on a single input? Until now you'd have to create a custom converter
class that delegates to several others. With <o:compositeConverter> you can do it declaratively:
<h:inputText value="#{bean.value}">
<o:compositeConverter converterIds="trimConverter, sanitizeConverter, entityConverter" />
</h:inputText>
The converterIds attribute takes a comma-separated list of converter IDs (registered via
@FacesConverter or in faces-config.xml). The execution order follows a natural symmetry:
- getAsObject (decode): executes converters left-to-right: 1st → 2nd → 3rd
- getAsString (encode): executes converters right-to-left: 3rd → 2nd → 1st
The output of each converter is passed as the input to the next. This makes it trivial to compose small, single-responsibility converters without any glue code.
New: #{o:flagEmoji(countryCode)}
A small but a handy one. The new #{o:flagEmoji(countryCode)} EL function converts an
ISO 3166-1 alpha-2 country code to its corresponding Unicode flag emoji:
#{o:flagEmoji('NL')} → π³π±
#{o:flagEmoji('US')} → πΊπΈ
#{o:flagEmoji('BR')} → π§π·
The function is case-insensitive. It returns null for empty input (so EL will basically render it as empty string) and throws
IllegalArgumentException for anything that is not a valid 2-letter alphabetic code.
Very useful whenever you want to display a country flag next to a locale selector, a phone prefix dropdown, or any other country-aware component. Never anymore fiddling with a boatload of flag icon files in your project or relying on a 3rd party flag icon library. You can now control it like a font.
Fixes
<o:validateMultiple>:
The invalidateAll attribute was missing from the VDL documentation. Fixed.
(#927)
CompressableResponseFilter:
The IOException was being unnecessarily wrapped in UnsupportedOperationException before being
rethrown, making it difficult to filter "connection reset" errors from server logs. It is now rethrown as-is.
(#928)
<o:socket> on WildFly:
The SocketEndpoint#onClose() failed to clean up socket sessions in memory and hence leaked memory (only on WildFly). This was a regression of #913 (introduced in 5.0 / 4.7.1 / 3.14.12 / 2.7.30).
(#931)
All these fixes are also available in 4.7.2 / 3.14.13 / 2.7.31.

No comments:
Post a Comment