What's new in OmniFaces?
What's new in OmniFaces 4.5.1?
Release date: 2 September, 2024
Fixed in OmniFaces 4.5.1
-
#831 -
Deployment failed in Quarkus due to
FullAjaxExceptionHandler
change in 4.5
What's new in OmniFaces 4.5?
Release date: 31 August, 2024
Added in OmniFaces 4.5
-
#798 -
Added
Components#setAttribute()
andComponents#disableInput()
utility methods -
#790 -
FacesConfigXml#getExceptionHandlerFactories()
helper method has been added to collect all so far declared exception handler factories -
#799 -
PWAResourceHandler
: added newWebAppManifest#getScreenshots()
andWebAppManifest#getShortcuts()
properties as per changes in w3 spec -
#633 -
Added tags for all OmniFaces converters and validators; so e.g.
omnifaces.SelectItemsConverter
is now also available as<o:selectItemsConverter>
-
#797 -
<o:criticalStylesheet>
which extends the standard<h:outputStylesheet>
with default rendering of<link rel="preload" as="style">
attributes which automatically torel="stylesheet"
during window load event and is automatically moved to very top of the head and is also treated separately from default CSS resources when usingCombinedResourceHandler
-
#822 -
<o:link>
which extends the standard<h:link>
and allows including the request query string parameters of the current URL into the link's target URL -
#824 -
@Param
can now be instructed to set any faces message as a global message via the new attribute@Param(globalMessage=true)
Changed in OmniFaces 4.5
-
#814 -
PWAResourceHandler
:WebAppManifest#getOrientation()
now returnsnull
as default value instead ofANY
-
#790 -
FullAjaxExceptionHandler
will now auto-register theFacesExceptionFilter
so there's no need anymore to explicitly register it inweb.xml
-
#821 -
GzipResponseFilter
has been renamed toCompressedResponseFilter
and got additional support for Brotli and Deflate compression algorithms next to Gzip -
#663 -
Faces#hasSessionTimedOut()
has been deprecated because the in 3.13 addedFaces#isRequestedSessionExpired()
does basically exactly the same
Fixed in OmniFaces 4.5
-
#823 -
@ViewScoped
corner case threadsafety bug has been fixed (won't happen in normal production environment with standard web browsers, but only in unit test environment when bean is programmatically accessed by parallel threads) - Remaining fixes are same as in 3.14.6
What's new in OmniFaces 4.4.1?
Release date: 5 May, 2024
Fixed in OmniFaces 4.4.1
-
#803 -
The in 4.4 introduced
LruCache
, used by@ViewScoped
and<o:cache>
, threw NPE when server is restarted with session persistence
What's new in OmniFaces 4.4?
Release date: 14 April, 2024
Added in OmniFaces 4.4
-
#787 -
Added
Components#createComponent()
utility methods to reduce boilerplate when creating components
Changed in OmniFaces 4.4
-
#792 -
The repackaged
ConcurrentLinkedHashMap
, used by@ViewScoped
and<o:cache>
has been replaced by simpler LRU map implementation, theorg.omnifaces.util.cache.LruCache
, which should reduce the amount of unnecessaryAtomicReference
instances in heap
Fixed in OmniFaces 4.4
What's new in OmniFaces 4.3?
Release date: 23 September, 2023
Added in OmniFaces 4.3
-
#769 -
<o:importConstants>
and<o:importFunctions>
got a newloader
attribute where you can specify an object whose class loader will be used to load the class specified in thetype
attribute -
#769 -
New
<o:loadBundle>
tag which basically extends the<f:loadBundle>
with a newloader
attribute where you can specify an object whose class loader will be used to load the bundle, and whoseLocale
will be obtained with better default values than the default Faces implementation -
#772 -
Added
Faces(Local)#isAuthenticated()
which checks if the current request has a remote user
Fixed in OmniFaces 4.3
-
#774 -
<o:socket>
failed to reconnect when connection is lost since 4.0 and threwUnknown channel: undefined
because the JS -> TS migration was not done right inPush.ts
- Remaining fixes are same as in 3.14.4
What's new in OmniFaces 4.2?
Release date: 24 June, 2023
Added in OmniFaces 4.2
-
#736 -
PWAResourceHandler
can now also be triggered viamanifest.webmanifest
which will eventually become the default overmanifest.json
-
#740 -
Added
Components#getRenderedValue()
so that you can easily grab the to-be-rendered value of anyValueHolder
component, particularly taking into account the internal state of anyUIInput
component, without the need to do all the checks if there's a submitted value or a local value or a converter etc -
#748 -
Added
Components#invalidateInputs()
andComponents#invalidateInput()
so that you can explicitly invalidate specificUIInput
components by a relative client ID, e.g. when a specific DB constraint violation exception was thrown during a bean action -
#761 -
Added
MessagesLocal
so that you can reuse any existingFacesContext
instance without the need to get it from theThreadLocal
again and again
Changed in OmniFaces 4.2
-
#745 -
Utils#encodeURI()
, which is internally used by among others#{of:encodeURI()}
,FacesViews
, andFileServlet
, now uses RFC 3986 instead of RFC 2396 - Remaining changes are same as in 3.14.3
Fixed in OmniFaces 4.2
-
#755 -
<o:highlight>
accidentally stopped working since 4.0 because it was overlooked inOmniFaces.ts
during the JS -> TS migration - Remaining fixes are same as in 3.14.3
What's new in OmniFaces 4.1?
Release date: 26 February, 2023
Added in OmniFaces 4.1
-
#730 -
<o:inputHidden>
has now a newreadonly
attribute, this will basically set the model value as submitted value during the decode and then run all the validators, but it won't update the model, this is very useful when you'd like to block the form submit by a validation error based on a server-controlled model value
Fixed in OmniFaces 4.1
-
#707 -
sw.js
requests unnecessarily triggered creation, building and rendering of a secondUIViewRoot
of the associated view, including any view scoped beans -
#728 -
CombinedResourceHandler
failed to resolve resources whenjakarta.faces.AUTOMATIC_EXTENSIONLESS_MAPPING
was enabled -
#729 -
@ViewScoped
unload unnecessarily threw an exception in MyFaces 4.x due to impl changes in their side - Remaining fixes are same as in 3.14.2
What's new in OmniFaces 4.0.1?
Release date: 21 November, 2022
Fixed in OmniFaces 4.0.1
-
#715 -
#{now}
and#{startup}
weren't compatible withof:xxx()
date functions - Remaining fixes are same as in 3.14.1
What's new in OmniFaces 4.0?
Release date: 2 October, 2022
Major in OmniFaces 4.0
- Minimum dependencies are changed from Java 1.8, JSF 2.3, EL 3.0, Servlet 3.1, CDI 2.0, WS 1.1 and BV 2.0 to Java 11, Faces 3.0, EL 4.0, Servlet 5.0, CDI 3.0, WS 2.0 and BV 3.0;
as of now, OmniFaces 4.0 is NOT backwards compatible with previous versions of these dependencies because of the compiler-incompatible rename of the
javax.*
package tojakarta.*
package. - All things which were during 3.x
@Deprecated
have been physically removed, such as<o:form includeViewParams="true">
(has become the default behavior),WebXml.INSTANCE
andFacesConfigXML.INSTANCE
(replaced byWebXml.instance()
andFacesConfigXml.instance()
) andomnifaces:fixviewstate.js
(replaced by JSF 2.3 native fix) #{now}
and#{startup}
will now return an instance ofjava.time.temporal.Temporal
instead ofjava.util.Date
; it still supports thetime
property as in#{now.time}
and#{startup.time}
; additionally, it's got two new convenience properties:instant
andzonedDateTime
as in#{now.instant}
,#{now.zonedDateTime}
,#{startup.instant}
and#{startup.zonedDateTime}
Callback
interfaces which dated from Java 1.7 and have replacements available in Java 1.8 are now@Deprecated
.Callback.Void
is replaced byRunnable
,Callback.Returning
is replaced bySupplier
,Callback.WithArgument
is replaced byConsumer
andCallback.ReturningWithArgument
is replaced byFunction
. Utility methods inComponents
andEvents
are have been adjusted.
OmniFaces 4.0 is basically the Jakartified version of OmniFaces 3.14 with the following changes:
Added in OmniFaces 4.0
-
#648 -
Components#addFacesScriptResource()
which allows the component developer to automatically include either the Faces 4.0-specificfaces.js
or the JSF 2.3-specificjsf.js
depending on whether the former is available as a resource in the current deployment -
#655 -
Faces#addResponseCookie()
got a new overload which allows adding custom attributes to the cookie such asSameSite:None
(NOTE: works currently only when using minimally Mojarra 4.0.0-M2 on top of minimally Servlet 6.0.0-M1)