What's new in OmniFaces?
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.2 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)
Changed in OmniFaces 4.0
What's new in OmniFaces 3.14.3?
Release date: 24 June, 2023
Changed in OmniFaces 3.14.3
-
#760 -
JMPS module name was missing in
MANIFEST.MF
; note that this will also change existing Javadoc links to/current
to have an additional/org.omnifaces
path -
#752 -
PWAResourceHandler
will now log a WARN line when specified offline view ID does not exist and thus it won't be added to sw.js -
#751 -
PWAResourceHandler
will now log a WARN line when no cacheable resources are found and thus no sw.js will be generated - Remaining changes are same as in 2.7.23
Fixed in OmniFaces 3.14.3
-
#754 -
<o:tagAttribute>
caused duplicate ID errors whenid
attribute is not specified while being used within aUIForm
- Remaining fixes are same as in 2.7.23
What's new in OmniFaces 3.14.2?
Release date: 26 February, 2023
Fixed in OmniFaces 3.14.2
-
#723 -
of:formatDate()
didn't correctly supportYearMonth
during the end of the month -
#725 -
Beans#unwrapIfNecessary()
didn't support Quarkus-generated proxies -
#733 -
org.omnifaces.util.Lazy
didn't implementSerializable
-
#734 -
Beans#getInstance()
incorrectly threw NPE when requested bean doesn't exist at all -
#737 -
<o:validateBean>
couldn't show message for an entity based input when a converter is involved which in turn converts between the input and the properties - Remaining fixes are same as in 2.7.22
What's new in OmniFaces 3.14.1?
Release date: 21 November, 2022
Fixed in OmniFaces 3.14.1
-
#714 -
FacesViews
org.omnifaces.FACES_VIEWS_LOWERCASED_REQUEST_URI
didn't work as intended when the target resource was already all-lowercased -
#719 -
Beans#destroy(T instance)
ran in an infinite loop after an accidental commit of an incorrectly done automatic code optimization during a save action in the Eclipse IDE - Remaining fixes are same as in 2.7.21
What's new in OmniFaces 3.14?
Release date: 2 October, 2022
Added in OmniFaces 3.14
-
#703 -
org.omnifaces.SKIP_DEPLOYMENT_EXCEPTION
context parameter has been added; when set totrue
then any OmniFaces initialization failure will not anymore block the application deployment -
#673 -
Beans#getInstance(String name)
new overloaded utility methods to obtain CDI managed bean instance by name instead of by class -
#710 -
Servlets#getWebXmlURL()
to obtain URL of currently usedweb.xml
file, regardless of whether it's inWEB-INF
folder orMETA-INF
folder, as used by among others Quarkus -
#679 -
MutableRequestFilter
which allows manipulating the request headers and parameters, along with new helper methods inFaces/FacesLocal#getMutableRequestXxxMap()
andServlets#getMutableRequestXxxMap()
-
#712 -
FacesViews
got a new configuration option to only accept the lowercased form of the request URI:org.omnifaces.FACES_VIEWS_LOWERCASED_REQUEST_URI
Fixed in OmniFaces 3.14
-
#710 -
FacesViews
failed to find welcome files in Quarkus environment - Remaining fixes are same as in 2.7.20
Changed in OmniFaces 3.14
-
#711 -
FacesViews#registerViewHander()
method name typo has been fixed toFacesViews#registerViewHandler()
What's new in OmniFaces 3.13.4?
Release date: 14 August, 2022
Fixed in OmniFaces 3.13.4
-
#699 -
<o:form>
partial submit behavior has been fixed and improved -
#701 -
JNDIObjectLocator
deadlock on failure path -
#702 -
FacesExceptionFilter
didn't respectorg.omnifaces.EXCEPTION_TYPES_TO_UNWRAP
when the exception was not wrapped in aServletException
- Remaining fixes are same as in 2.7.19
What's new in OmniFaces 3.13.3?
Release date: 14 May, 2022
Fixed in OmniFaces 3.13.3
What's new in OmniFaces 3.13.2?
Release date: 2 May, 2022
Fixed in OmniFaces 3.13.2
-
#687 -
<o:importConstants>
fix done in 3.13.1 bugged when enum implements interface
What's new in OmniFaces 3.13.1?
Release date: 1 May, 2022
Fixed in OmniFaces 3.13.1
-
#671 -
<o:scriptParam>
in combination with<f:viewAction>
referencing a@ViewScoped
bean threw "Component ID omnifaces_omnifaces_js has already been found in the view" -
#676 -
VersionedResourceHandler
remapped resource was notExternalizable
-
#680 -
The
CloneCopier
of<o:validateBean>
should have invokedMethod#canAccess()
instead ofMethod#isAccessible()
-
#677 -
ExpressionInspector#getMethodReference()
failed withClassCastException
when inspecting aMethodExpressionValueExpressionAdapter
- Remaining fixes are same as in 2.7.17
What's new in OmniFaces 3.13?
Release date: 22 January, 2022
Added in OmniFaces 3.13
-
#663 -
Faces#isRequestedSessionExpired()
which returnstrue
when a session ID has been requested but it is expired
Changed in OmniFaces 3.13
-
#660 -
Scripts and stylesheets generated by
<o:deferredScript>
andCombinedResourceHandler
have now by default anintegrity
attribute with an automatically calculated SRI hash when thecrossorigin
attribute equals or defaults toanonymous
-
#662 -
<o:validate*>
components
attribute now supports referencing a parent component having UIInput children instead of all of those individual UIInput children
Fixed in OmniFaces 3.13
-
#659 -
The
CloneCopier
of<o:validateBean>
will not anymore explicitly callMethod#setAccessible()
via reflection (and therefore not anymore be prone to throwIllegalStateException
in Java 16+) - Remaining fixes are same as in 2.7.15
What's new in OmniFaces 3.12?
Release date: 15 November, 2021
Added in OmniFaces 3.12
-
#654 -
<o:validateBean>
got a new attributemessageFormat
which allows you to override the default message format of label: message on a per-tag basis
Fixed in OmniFaces 3.12
What's new in OmniFaces 3.11.2?
Release date: 15 October, 2021
Fixed in OmniFaces 3.11.2
What's new in OmniFaces 3.11.1?
Release date: 5 June, 2021
Fixed in OmniFaces 3.11.1
What's new in OmniFaces 3.11?
Release date: 4 April, 2021
Added in OmniFaces 3.11
-
#622 -
Components#findClosestParent()
which returns anOptional
Changed in OmniFaces 3.11
-
#613 -
CombinedResourceHandler
will now explicitly excludemedia="print"
stylesheets -
#620 -
GzipResponseFilter
will now by default also recognizeapplication/x-javascript
resources
Fixed in OmniFaces 3.11
-
#624 -
@Param
failed to perform bean validation on a targeted/proxied instance -
#625 -
Components#getMessageComponent()
didn't utilize JSF 2.3 search expression framework - Remaining fixes are same as in 2.7.11
What's new in OmniFaces 3.10.1?
Release date: 24 January, 2021
Fixed in OmniFaces 3.10.1
-
e2246c0 -
<o:graphicImage>
dataURI="true"
didn't work due to a typo introduced in 3.10
What's new in OmniFaces 3.10?
Release date: 24 January, 2021
Added in OmniFaces 3.10
-
#584 -
ViewResourceHandler
which enables using JSF components and EL expressions in non-Facelets files such as/sitemap.xml
and/robots.txt
-
#584 -
<o:sitemapUrl>
to generate a<url>
element in<urlset>
of/sitemap.xml
-
#584 -
Servlets#getContext()
to obtain the currentServletContext
viaFacesContext
with fallback toBeanManager
-
#584 -
FacesConfigXml#getResourceHandlers()
to obtain a list of all registered<application><resource-handler>
entries -
#602 -
Exceptions#extract()
to extract the specified nested cause from the given exception -
#222 -
<o:graphicImage>
now supports lazy images via newlazy="true"
attribute -
#605 -
of:convert()
EL function to convert given object usingConverter#getAsString()
of an existing JSF converter -
#606 -
Faces#getRequestParameter()
got two new overloads taking aFunction<String, T>
as converter -
#607 -
Faces#getReferrer()
andServlets#getReferrer()
to obtain theReferer
header from the request
Changed in OmniFaces 3.10
-
#261 -
<o:massAttribute>
target
will now accept a commaseparated string of FQNs -
65d6c3a -
33a294a -
FacesViews
ResourceResolver
has been migrated toResourceHandler
as theResourceResolver
approach was long deprecated since JSF 2.2
Fixed in OmniFaces 3.10
What's new in OmniFaces 3.9?
Release date: 19 December, 2020
Added in OmniFaces 3.9
-
#580 -
Faces#sendFile()
got new overload methods acceptingjava.nio.file.Path
instead ofjava.io.File
, and now also allows overriding the file name instead of relying on the one ofPath
orFile
-
#581 -
JNDIObjectLocator
which minimizes the overhead of JNDI lookups by caching the objects it looks up -
#586 -
VersionedResourceHandler
which automatically adds av
cache bust query string parameter if absent -
e954e5b -
ViewExpiredExceptionHandler
which completely suppressesViewExpiredException
and sets a flag in flash scope -
a0ae2e6 -
WebXml#isDistributable()
which returns true if<distributable>
flag is set inweb.xml
-
#593 -
ExceptionSuppressor
to completely suppress (and thus not log) specific exceptions by simply refreshing the current page, such as inevitable I/O errors caused byjava.nio.channels.ClosedByInterruptException
Fixed in OmniFaces 3.9
-
#598 -
<o:validateBean>
was over-recursive, it will now only recurse into nested entities which are explicitly annotated with@Valid
- Remaining fixes are same as in 2.7.9
What's new in OmniFaces 3.8.1?
Release date: 25 October, 2020
Fixed in OmniFaces 3.8.1
-
#577 -
<o:validateBean>
failed validating nested properties when model has ajava.util.Calendar
property - Remaining fixes are same as in 2.7.8
What's new in OmniFaces 3.8?
Release date: 12 September, 2020
Added in OmniFaces 3.8
-
#569 -
of:encodeBase64()
to Base64-encode strings in EL, e.g. for data URIs -
#247 -
Beans#isProxy/unwrapIfNecessary()
utility methods to check if a given object is a CDI proxy, and to unwrap it if necessary -
#574 -
Components#getExpectedType/getExpectedValueType()
utility methods to return the expected type of thevalue
attribute of the givenUIComponent
, or a givenValueExpression
-
ef3b15d -
Messages#asConverterException/asValidatorException()
utility methods to obtain the so far created faces message as aConverterException
orValidatorException
, so these can be thrown directly
Changed in OmniFaces 3.8
-
#247 -
<o:validateBean>
will now (finally) automatically validate nested entities as well, simply put@Valid
on them -
#574 -
@Param
will now simulate aValueExpression
on the component passed into converter/validator so that any generic target type can be extracted from there
Fixed in OmniFaces 3.8
-
#568 -
FacesExceptionFilter
logged the wrong error page location when the exception was wrapped in aServletException
-
#572 -
@FacesConverter
/@FacesValidator
didn't properly support@ResourceDependency
annotations declared on them - Remaining fixes are same as in 2.7.7
What's new in OmniFaces 3.7.1?
Release date: 12 July, 2020
Fixed in OmniFaces 3.7.1
-
#562 -
sw.js
generated byPWAResourceHandler
turned out to perform horribly on showcase site after release; performance improvements have been made
What's new in OmniFaces 3.7?
Release date: 12 July, 2020
Added in OmniFaces 3.7
-
#532 -
PWAResourceHandler
to autogenerate offline-awaresw.js
file -
#553 -
o:inputHidden
which always immediately performs the conversion, validation and update of model during the apply request values phase -
#561 -
of:stripTags()
to remove any XML tags from a string
Changed in OmniFaces 3.7
-
#532 -
WebAppManifestResourceHandler
has been renamed toPWAResourceHandler
-
#556 -
WebXml#instance()
will now also recognize non-standard locationMETA-INF/web.xml
, as used by among others Quarkus.
Fixed in OmniFaces 3.7
What's new in OmniFaces 3.6.1?
Release date: 22 May, 2020
Fixed in OmniFaces 3.6.1
-
#553 -
<o:tree>
caused stack overflow error when OmniFaces@ViewScoped
is created for first time during tree rendering
What's new in OmniFaces 3.6?
Release date: 3 May, 2020
Added in OmniFaces 3.6
-
f638cec -
Faces#createResource()
to create newResource
instances -
#532 -
WebAppManifestResourceHandler
to autogeneratemanifest.json
file -
1455246 -
Servlets#isProxied()
which checks ifForwarded
header orX-Forwarded-For
is present -
#471 -
<o:pathParam>
to support path params in links pointing to aMultiViews
resource -
145eee6 -
<o:scriptParam>
to inject evaluated JavaScript code in backing bean -
a4cd6db -
Ajax#isExecuted()
to check if given client ID is covered by<f:ajax execute>
-
ca6659e -
Components#addScript/addScriptResource()
to add an inline script or script resource without the need to worry if the current request is an ajax request or if the render response phase is already running
Changed in OmniFaces 3.6
-
1455246 -
Faces/FacesLocal/Servlets#getRemoteAddr()
now also checksForwarded
header instead of onlyX-Forwarded-For
-
#548 -
of:formatDateXxx()
methods now also supportjava.time.temporal.Temporal
instances -
#546 -
2023-09-22T13:06:09.407208+02:00[Europe/Amsterdam]
and2023-09-18T16:42:05.849836+02:00[Europe/Amsterdam]
are now produced by CDI instead of JSF -
#497 -
@Param
now supports defaulting to argument name in constructor injection -
#550 -
@Param
now doesn't anymore require@Inject
-
ca6659e -
Components#addScriptToBody /addScriptResourceToHead /addScriptResourceToBody()
are now@Deprecated
in favor ofComponents#addScript/addScriptResource()
Fixed in OmniFaces 3.6
What's new in OmniFaces 3.5?
Release date: 12 April, 2020
Added in OmniFaces 3.5
-
#541 -
#{of:encodeURI()}
little brother of#{of:encodeURL()}
-
#537 -
crossorigin
attribute ofCombinedResourceHandler
is now configureable -
#544 -
Messages#clearXxx()
to programmatically clear out faces messages -
#545 -
Messages#throwXxx()
convenience methods to replacethrow new ConverterException(Messages.createError("..."))
Fixed in OmniFaces 3.5
What's new in OmniFaces 3.4.1?
Release date: 30 November, 2019
Fixed in OmniFaces 3.4.1
-
#522 -
WebXml#instance()
didn't work during startup (e.g.ServletContextListener
,@Observes @Initialized(ApplicationScoped.class)
, etc) - Remaining fixes are same as in 2.7.3
What's new in OmniFaces 3.4?
Release date: 27 October, 2019
Added in OmniFaces 3.4
-
#512 -
<o:socket>
got a new attributeonerror
Fixed in OmniFaces 3.4
What's new in OmniFaces 3.3?
Release date: 5 May, 2019
Added in OmniFaces 3.3
-
#507 -
Faces#addResponseCookie()
got an overload which supports overridding theHttpOnly
flag -
#505 -
<o:cache>
interface now supports aclear()
method -
#504 -
Application startup will explicitly fail when duplicate
ResourceHandler
instances are registered, which can only indicate a misconfiguration
Changed in OmniFaces 3.3
-
#472 -
@ContextParam
and@Cookie
can now also be used outsideFacesContext
(e.g. in a plain servlet/filter) -
#494 -
<o:socket>
documentation has been improved with cluster design hints
Fixed in OmniFaces 3.3
What's new in OmniFaces 3.2?
Release date: 29 July, 2018
Added in OmniFaces 3.2
-
b2796b8 -
<o:hashParam>
has been added which is similar to<o:viewParam>
but then for hash parameters like/page.xhtml#foo=bar&baz=kaz
instead of query parameters -
b2796b8 -
Faces#getHashParameters()
,Faces#getHashParameterMap()
andFaces#getHashQueryString()
which extracts information from hash parameters managed by<o:hashParam>
-
#461 -
New
CDNResource
marker class which allowsCombinedResourceHandler
generating a fallback local URL -
#469 -
<o:viewAction>
now supports adding a faces message to the redirected page via newmessage
attribute -
#477 -
FullAjaxExceptionHandler
andFacesExceptionFilter
will from now on also log an UUID and IP address for easier log analysis -
ef920bb -
Faces#getUserAgent()
has been added
Changed in OmniFaces 3.2
-
#472 -
<o:socket>
now supports dynamic changes inuser
attribute without the need to refresh the page
Fixed in OmniFaces 3.2
-
#445 -
Components#getParams()
wasn't correctly parameterized - Remaining fixes are same as in 2.7
What's new in OmniFaces 3.1?
Release date: 12 April, 2018
Added in OmniFaces 3.1
-
#431 -
Components#findComponentsInCurrentForm()
to find components of given type in currently submitted form -
8080151 -
Faces/FacesLocal#getInitParameterOrDefault()
which returns given default value when the init parameter is absent -
#430 -
SourceMapResourceHandler
in order to automatically set the correctSourceMap
response header on CSS/JS resources -
c04e0eb -
Faces/FacesLocal#getContextAttribute()
got an overload which takes a new argument representing the supplier which will be computed in case the attribute is absent -
2123aa7 -
Beans/BeansLocal#resolveExact()
which will ignore any subclasses when resolving the given class -
d1f1428 -
ViewScopeManager#isUnloadRequest()
for easier checking in a servlet filter whether current request is an unload request -
dd08730 -
MessagesKeywordResolver
so that you can use@messages
in ajax render/update to reference onlyUIMessage(s)
components
Changed in OmniFaces 3.1
-
#441 -
FacesConfigXml
andWebXml
are now interfaces with an enum implementation which should allow easier mocking during unit testing, hereby theINSTANCE
constant has been deprecated and is replaced byinstance()
method
Fixed in OmniFaces 3.1
-
#437 -
@FacesConverter
/@FacesValidator
didn't support custom attributes via<o:converter>
anymore since JSF 2.3 -
#438 -
<o:param>
withconverter
threwClassCastException
due to an bug in javac7 -
#439 -
<o:socket>
will not anymore infintely keep retrying to push the message on Tomcat when the server fails do deliver the message due to its internal design flaw -
#443 -
ValueChangeConverter
class was incorrectly parameterized and caused compile error when extended by an already parameterized converter - Remaining fixes are same as in 2.6.9
What's new in OmniFaces 3.0?
Release date: 3 January, 2018
Major in OmniFaces 3.0
- Dependencies are changed from Java 1.7, JSF 2.2, EL 2.2, Servlet 3.0, CDI 1.1 and BV 1.1 to Java 1.8, JSF 2.3, EL 3.0, Servlet 3.1, CDI 2.0 and BV 2.0; as of now, OmniFaces 3.0 is still backwards compatible with EL 2.2, CDI 1.1 and BV 1.1, but that may change when new features are utilized
- OmniFaces initialization will explicitly fail if CDI
BeanManager
is unavailable during application startup -
#388 -
<o:form>
now defaults touseRequestURI="true"
-
#394 -
<o:form>
now defaults topartialSubmit="true"
-
#352 -
<o:validateBean showMessageFor="@violating">
will not anymore show "remaining" messages for properties which are not coverred by JSF form -
#411 -
ValidateMultipleFields
will not anymore skip readonly/disabled/unrendered components but instead supply their current model value -
e2a3f25 -
org.omnifaces.component.output.cache
package has been moved toorg.omnifaces.util.cache
as it's reusable for non-component caches (it's internally also used byCombinedResourceHandler
) -
#338 -
All
Faces/FacesLocal
andServlets
utility methods which previously threwIOException
will now throwUncheckedIOException
instead -
8b3899b -
All in 2.x
@Deprecated
things have been removed, such asorg.omnifaces.config.BeanManager
(replaced byBeans
) andorg.omnifaces.renderkit.Html5RenderKit
(replaced by JSF 2.2 native passthrough attributes) - #404 - All RichFaces-specific hacks have been removed as RichFaces was declared End Of Life at June 2016 and doesn't have a JSF 2.3 compatible version; OmniFaces 3.0 is therefore also not anymore RichFaces compatible
Added in OmniFaces 3.0
-
#394 -
<o:selectItemGroups>
to represent<optgroup>
-
#416 -
<o:url>
has been extended with a value attribute which can take an arbitrary/external URL -
#387 -
ImplicitNumberConverter
which extends<f:convertNumber>
, but doesn't annoyingly require enduser to explicitly input the percent or currency symbol when usingtype="percent"
ortype="currency"
. -
b7fef76 -
FacesRequestLogger
to print detailed logs of JSF requests, including request method/URI/params, session/viewstate ID, remote user, action method expressions, faces messages and phase timings -
7d1bf0d -
Faces#getRequest/Flash/View/Session/ApplicationAttribute()
got an overload which takes a new argument representing the supplier which will be computed in case the attribute is absent -
#407 -
Faces#isRequestSecure()
which also checks the de-factoX-Forwarded-Proto
header -
#381 -
#{of:isInstance('com.example.ClassName', object)}
to act asinstanceof
in EL -
#406 -
#{of:parenthesize(object)}
which will print parenthesis around the given object only and only if it isn't null nor empty nor equals zero, else print nothing -
#374 -
NoAutoGeneratedIdViewHandler
will now also recognizeprependId="false"
and log a warning because this is bad practice
Changed in OmniFaces 3.0
- e2d03d9 - feae34a - 4d3d123 - 236e93b - c275dea - 8284ffb - Under the covers, many things are replaced by new JSF 2.3 API things and also Java8 lambdas and streams have been introduced where possible
-
#268 -
<o:commandScript>
has been deprecated as it's now moved into JSF 2.3 as<h:commandScript>
with exactly the same functionality -
#267 -
omnifaces:fixviewstate.js
has been deprecated as it's now finally solved in JSF 2.3 (by yours truly) -
#388 -
includeViewParams="true"
attribute of<o:form>
have been deprecated as those have never proven to be more useful thanuseRequestURI="true"
orincludeRequestParams="true"
Fixed in OmniFaces 3.0
What's new in OmniFaces 2.7.23?
Release date: 24 June, 2023
Changed in OmniFaces 2.7.23
-
#744 -
CDI general: the
bean-discovery-mode
has been put back toannotated
-- it was previously set toall
in order to work around a Weld 2.x specific bug, but this was thus fixed in Weld 3.x and newer
Fixed in OmniFaces 2.7.23
-
#531 -
@ViewScoped
unload failed to destroy view state in MyFaces when a different mapping was used than*.xhtml
-
#742 -
FullAjaxExceptionHandler
: fixed detection of PrimeFaces-specific Ajax requests to also check for custom components extending from PrimeFaces
What's new in OmniFaces 2.7.22?
Release date: 26 February, 2023
Fixed in OmniFaces 2.7.22
-
#720 -
<o:graphicImage>
now also fully supports WEBP type -
#721 -
of:formatBytes()
incorrectly ignored the locale during formatting - it was only used during parsing -
#735 -
Multi-field validators failed to skip input when the
rendered="false"
attribute was placed on a parent component instead of on the input component itself -
#738 -
Deployment of a WAR with OmniFaces failed when in web.xml a
<servlet-mapping>
without a<servlet-class>
is encountered before theFacesServlet
-
#739 -
omnifaces.ToCollectionConverter
incorrectly trimmed the delimiter ingetAsObject()
, causing that a newline couldn't be used as delimiter
What's new in OmniFaces 2.7.21?
Release date: 21 November, 2022
Fixed in OmniFaces 2.7.21
-
#718 -
Servlets#toParameterMap()
(also used internally by among others<o:form>
) threw IllegalArgumentException on/someurl?foo=%
(so, query string having a param with invalid URL-encoded segment)
What's new in OmniFaces 2.7.20?
Release date: 2 October, 2022
Fixed in OmniFaces 2.7.20
-
#705 -
Ajax#updateRow/updateColumn()
fix of previous version failed when direct parent of table is not aNamingContainer
-
#713 -
SelectItemsIndexConverter
failed to convert the items to string when the list is changed during invoke application phase of a postback
What's new in OmniFaces 2.7.19?
Release date: 14 August, 2022
Fixed in OmniFaces 2.7.19
-
#694 -
#697 -
MultiViews
welcome file was not properly picked up when placed in a subfolder -
#692 -
Ajax#updateRow/updateColumn()
caused malformedXML error when column hasrendered=false
-
#693 -
Beans#getManager()
will fall back tojava:comp/env
whenjava:comp
isn't available (e.g. Tomcat)
What's new in OmniFaces 2.7.18?
Release date: 14 May, 2022
Fixed in OmniFaces 2.7.18
-
#687 -
<o:importConstants>
fix done in 2.7.17 bugged on interface constants -
#688 -
RemappedResource
name/library was not mutable (used by among othersUnmappedResourceHandler
since 1.4 andVersionedResourceHandler
since 3.9)
What's new in OmniFaces 2.7.17?
Release date: 1 May, 2022
Note: 2.7.16 was accidentally released with a bug in backported <o:importConstants>
, do NOT use it!
Fixed in OmniFaces 2.7.17
-
#688 -
<o:viewParam>
default
value should not end up in bookmarkable URL -
#672 -
<o:importConstants>
should not expose shadowed constants from superclasses or interfaces -
#685 -
UnmappedResourceHandler
threw NPE when a folder was requested (by e.g. a searchbot) -
#651 -
UnmappedResourceHandler
should strip off wrongFacesServlet
prefix mapping whenMultiViews
is used
What's new in OmniFaces 2.7.15?
Release date: 22 January, 2022
Fixed in OmniFaces 2.7.15
-
#661 -
<o:inputFile>
accept
attribute validation failed when mime type contained a '+' character such as "image/svg+xml" -
#664 -
FullAjaxExceptionHandler
missed stylesheets in JSF 2.3 when exception was triggered by PrimeFaces Ajax tag nested in a standard Faces UICommand component -
#665 -
Servlets#toParameterMap()
(also used internally by among others<o:form>
) threw ArrayIndexOutOfBoundsException on/someurl?=
(so, query string having a param without name as well as value) -
#657 -
<o:inputFile>
multiple="true" maxsize="..."
uploading too big size threw NPE whenjavax.faces.VALIDATE_EMPTY_FIELDS
orjavax.faces.ALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUE
is set totrue
-
#653 -
NestedFormsChecker
will now not anymore perform a tree visit but a simple children traversal
What's new in OmniFaces 2.7.14?
Release date: 15 November, 2021
Fixed in OmniFaces 2.7.14
-
#646 -
ExpressionInspector#getMethodReference()
failed since Tomcat 9.0.54 due to an internal change in its EL impl -
#649 -
FacesViews
threw NPE instead of 404 error in MyFaces for a non-existent view -
#634 -
FacesConfigXml
error reporting has been improved to include exact location of any unparseablefaces-config.xml
-
#650 -
Components#getActionExpressionsAndListeners()
didn't return the desired expression string in case ofactionListener
; this will improve logging ofFacesRequestLogger
on them
What's new in OmniFaces 2.7.13?
Release date: 15 October, 2021
Fixed in OmniFaces 2.7.13
-
#640 -
CombinedResourceHandler
threw intermittent NPE in MyFaces 2.2 -
#644 -
FullAjaxExceptionHandler
threw NPE when Ajax exception is thrown during view build time during render response phase -
#645 -
NoAutoGeneratedIdViewHandler
incorrectly logged component type<null>
on components nested inUIData/UIRepeat
-
#645 -
NoAutoGeneratedIdViewHandler
has been adjusted to not anymore throw ISE when component couldn't be resolved, instead it logs a warning
What's new in OmniFaces 2.7.12?
Release date: 5 June, 2021
Fixed in OmniFaces 2.7.12
-
3f87300 -
MultiViews
"excluded pages" failed in OpenLiberty -
fbdfe7d -
MultiViews
welcome file path info was missing in OpenLiberty -
#627 -
#630 -
FullAjaxExceptionHandler
missed stylesheets in JSF 2.3 when exception was triggered by PrimeFaces Ajax instead of standard Faces Ajax -
#628 -
<o:param>
failed to use attachedconverter
in Ajax postback with partial state saving disabled -
#629 -
<o:validateBean>
failed to fallback whenjavax.faces.validator.BeanValidator.MESSAGE
is absent in bundle
What's new in OmniFaces 2.7.11?
Release date: 4 April, 2021
Fixed in OmniFaces 2.7.11
-
#623 -
FacesViews
will now automatically detect multiple mappings ofFacesServlet
so that these are also properly 301-redirected
What's new in OmniFaces 2.7.10?
Release date: 24 January, 2021
Fixed in OmniFaces 2.7.10
-
#600 -
CombinedResourceHandler
will now automatically deduplicate incorrectly duplicated@ResourceDependency
stylesheets
What's new in OmniFaces 2.7.9?
Release date: 19 December, 2020
Fixed in OmniFaces 2.7.9
-
#582 -
<o:tree>
will now also firePreValidateEvent
/PostValidateEvent
on itself rather than only on<o:treeNode>
-
#583 -
<o:socket>
threwUncaught TypeError: Cannot read property 'name' of null at Object.request
after being Ajax-updated itself
What's new in OmniFaces 2.7.8?
Release date: 25 October, 2020
Fixed in OmniFaces 2.7.8
-
#575 -
<o:converter>
and<o:validator>
threwNotSerializableException
in MyFaces or whenjavax.faces.PARTIAL_STATE_SAVING
isfalse
-
#576 -
omnifaces.ToCollectionConverter
didn't correctly delegate togetAsObject()
whenitemConverter
is specified
What's new in OmniFaces 2.7.7?
Release date: 12 September, 2020
Changed in OmniFaces 2.7.7
-
#570 -
<o:socket>
onerror
attribute was backported from 3.x to 2.x
Fixed in OmniFaces 2.7.7
-
#564 -
<o:validateBean>
wasn't respectingjavax.faces.validator.BeanValidator.MESSAGE
-
#566 -
<o:socket>
moment of JSON encoding has been optimized so it's not repeated when same message is sent to multiple users
What's new in OmniFaces 2.7.6?
Release date: 12 July, 2020
Fixed in OmniFaces 2.7.6
-
#560 -
<o:deferredScript>
will now only start whenjQuery.ready
is finished, if any
What's new in OmniFaces 2.7.5?
Release date: 3 May, 2020
Fixed in OmniFaces 2.7.5
-
#551 -
MultiViews
failed when using exclude patterns in Tomcat-based servers
What's new in OmniFaces 2.7.4?
Release date: 12 April, 2020
Fixed in OmniFaces 2.7.4
- #533 - OmniFaces version logger didn't log Z of X.Y.Z version.
What's new in OmniFaces 2.7.3?
Release date: 30 November, 2019
Fixed in OmniFaces 2.7.3
-
#528 -
Improved support for MyFaces
org.apache.myfaces.annotation.USE_CDI_FOR_ANNOTATION_SCANNING
to reduce startup time -
#530 -
<o:messages>
didn't renderstyleClass
when the list is empty (hereby making it unnecessarily more difficult for e.g. PrimeFaces Selectors) -
#531 -
@ViewScoped
unload now also supportspagehide
event of Safari on iOS -
#527 -
CombinedResourceHandler
triggered a confusingWARNING: Unable to save dynamic action
in Mojarra in Development stage
What's new in OmniFaces 2.7.2?
Release date: 27 October, 2019
Fixed in OmniFaces 2.7.2
-
#517 -
@ViewScoped
beans now also support non-PassivationCapable beans such as used in Quarkus -
#514 -
<o:validator>
and<o:converter>
threwNotSerializableException
-
#513 -
@Param
failed to inject correctly whenconverterAttributes
orvalidatorAttributes
is used -
#521 -
MultiViews
failed when mapped in subfolder -
762fbf4 -
CombinedResourceHandler
didn't render the correct fallback script for<o:deferredScript>
What's new in OmniFaces 2.7.1?
Release date: 5 May, 2019
Fixed in OmniFaces 2.7.1
-
#478 -
<o:tagAttribute>
autogenerated ID was set in wrong variable mapper, causing duplicate IDs when multiple tags are used -
#483 -
@ViewScoped
unload of an expired view in older browsers (not supportingNavigator.sendBeacon
) unnecessarily reinitialized the beans -
2a703a2 -
Components#getCurrentActionSource()
threwNullPointerException
during unload request -
ecc5d97 -
d8e3eee -
@FacesConverter
wasn't correctly resolved whenforClass
refers a primitive -
#498 -
Faces#redirect()
now supportsObject...
instead ofString...
as arguments -
#499 -
CDNResourceHandler
threwClassCastException
whenCDN_RESOURCE_HANDLER_DISABLED
param is set -
#503 -
<o:socket>
reconnected in an infinite loop in older IE/Edge versions when session expired
What's new in OmniFaces 2.7?
Release date: 29 July, 2018
Added in OmniFaces 2.7
-
#461 -
New
CDNResource
marker class which allowsCombinedResourceHandler
generating a fallback local URL
Fixed in OmniFaces 2.7
-
#456 -
<o:socket>
leaked memory -
#457 -
CombinedResourceHandler
script ordering was off after non-Ajax postback in MyFaces -
#460 -
Components#getCurrentActionSource()
didn't work within forms withprependId="false"
-
#464 -
org.omnifaces.COMBINED_RESOURCE_HANDLER_DISABLED
didn't correctly support EL expressions -
#463 -
@ViewScoped
shouldn't implicitly register the unload script on stateless views -
#467 -
@Param
caused deployment fail when optional Bean Validation is absent -
#466 -
<o:validateBean>
wasn't JSF locale aware -
#474 -
<o:tagAttribute>
didn't automatically take care of autogenerated ID on an empty<o:tagAttribute name="id">
What's new in OmniFaces 2.6.9?
Release date: 12 April, 2018
Fixed in OmniFaces 2.6.9
-
#434 -
<o:socket>
disappears from page when a non-ajax non-redirect postback is performed -
#435 -
of:formatThousands()
didn't support negative numbers -
#440 -
Beans#getManager()
will fall back to JNDI when CDI isn't initialized yet (fixes intermittent initialization errors in WebLogic server) -
#436 -
SelectItemsIndexConverter
will now skip empty values (fixes incompatibility with ancient MyFaces 2.0.x versions) -
#444 -
@ViewScoped
unload failed in MyFaces 2.3.0 -
#446 -
<o:validateBean>
showMessageFor="component1 component2"
didn't work as intented -
#447 -
<o:inputFile>
will now decapitalize file extension before testing mime type (fixes incompatiblity with WebSphere server) -
#449 -
FacesViews
didn't support folder names with a period
What's new in OmniFaces 2.6.8?
Release date: 3 January, 2018
Fixed in OmniFaces 2.6.8
-
#426 -
OmniPartialViewContext
will now delegatestartDocument()
to wrapped partial response writer and reset internalupdating
state; this will only have a positive effect when you have your own wrapped partial response writer on top of OmniFaces
What's new in OmniFaces 2.6.7?
Release date: 14 December, 2017
Fixed in OmniFaces 2.6.7
-
#417 -
FullAjaxExceptionHandler
broke since 2.6.6 in MyFaces whenshouldHandleExceptionRootCause()
is implemented in an extended exception handler; the original behavior has been fixed -
#423 -
Servlets#getSubmittedFileName()
has been improved to support semicolons and quotes in file names (Unix) and UTF-8 filenames
What's new in OmniFaces 2.6.6?
Release date: 10 November, 2017
Fixed in OmniFaces 2.6.6
-
#414 -
AbstractTreeModel#remove
broke since 2.6.5; the AbstractTreeModel#equals has been re-fixed -
#413 -
FullAjaxExceptionHandler
broke since 2.6.5; the default behavior on non-Ajax requests has been re-fixed
What's new in OmniFaces 2.6.5?
Release date: 14 October, 2017
Fixed in OmniFaces 2.6.5
-
#401 -
AbstractTreeModel#equals
ran in infinite loop -
#399 -
@FacesConverter
subclasses were not correctly resolved (regression since 2.6) -
#396 -
<h:inputFile>
maxsize validation failed in IE11 -
#395 -
FullAjaxExceptionHandler
can now be extended for non-Ajax requests, i.e. showing a faces message instead now also works for non-ajax requests -
#402 -
MultiViews
now supports exclude URL patterns like<param-value>/*.xhtml/*, !/api, !/push</param-value>
-
#408 -
<o:skipValidators>
didn't correctly restorerequired="true"
literal across postbacks
What's new in OmniFaces 2.6.4?
Release date: 31 July, 2017
Fixed in OmniFaces 2.6.4
-
#386 -
FullAjaxExceptionHandler
ran in infinite loop when session expires during a long running request in WildFly -
#392 -
@ViewScoped
unload on an expired restricted page should not be re-executed by authentication frameworks when user logs in again -
5d47da1 -
@ViewScoped
unload didn't work correctly in Safari
What's new in OmniFaces 2.6.3?
Release date: 4 June, 2017
Fixed in OmniFaces 2.6.3
-
#375 -
@ViewScoped
unload may fail when client side state saving is used on relatively large views -
#370 -
@ViewScoped
unload may fail when PrettyFaces rewrites its URL -
#372 -
@Param
threwInvalid property path
when constructor injection is used -
#377 -
FacesViews
initialization failed during parallel deployment in WildFly -
#370 -
@ViewScoped
unload didn't delete physical beans from Mojarra's session storage -
#357 -
@ViewScoped(saveInViewState=true)
is recreated on postback when<f:viewAction>
is present -
#385 -
PrimeFaces Dialog Framework's
closeDialog()
failed whenMultiViews
is enabled
What's new in OmniFaces 2.6.2?
Release date: 7 April, 2017
Fixed in OmniFaces 2.6.2
- #363 - Removed accidentally introduced Java 1.8 specific methods (2.6 was therefore not Java 1.7 compatible, but 2.6.2 is)
-
#362 -
@ViewScoped
unload failed in MyFaces when<f:viewAction>
is present in view -
#368 -
Standard JSF converters failed to initialize when it's subclassed into a custom
@FacesConverter
What's new in OmniFaces 2.6.1?
Release date: 21 February, 2017
Fixed in OmniFaces 2.6.1
-
#355 -
@ViewScoped
unload threw NPE in MyFaces when unload is triggered on a cached page -
#361 -
@ViewScoped
unload failed in MyFaces when bean is created before the view is created
What's new in OmniFaces 2.6?
Release date: 2 February, 2017
Added in OmniFaces 2.6
-
#317 -
#342 -
showMessageFor
attribute for<o:validateBean>
which also supportsConstraintViolation#getPropertyPath()
-
#311 -
FacesELResolver
which injects a new implicit EL object#{faces}
providing direct access to methods ofFaces
utility class which start with "get" or "is", and take no parameters, and return eitherString
orboolean
, and are not related to response nor to session or flash -
375dfd2 -
TrimConverter
,ToLowerCaseConverter
andToUpperCaseConverter
for basic conversions on submittedString
values -
#326 -
OmniFaces.Unload.reenable()
function to allow developer explicitly re-enabling unload script of@ViewScoped
-
#327 -
ToCollectionConverter
to convert a delimitedString
submitted value to a fullworthyCollection
-
ffb2b32 -
335d7f9 -
Servlets#formatContentDispositionHeader()
which formats an UTF-8 compatible content disposition header, andServlets#getRequestParameterMap()
which returnsMap<String, List<String>>
instead ofMap<String, String[]>
-
#330 -
saveInViewState
attribute for@ViewScoped
which should trigger explicitly saving the entire view scoped bean in JSF view state when client side state saving is enabled, hereby making it effectively not requiring the HTTP session anymore -
9b0c984 -
c267b1c -
942bf43 -
Faces#getProjectStage()
,Faces#isSystemTest()
,Faces#isProduction()
,Faces#getRequestParameter(name, type)
andFaces#getRequestParameterValues(name, type)
Changed in OmniFaces 2.6
-
#319 -
<o:socket>
is now anUIComponent
instead ofTagHandler
in order to support<f:ajax>
-
#325 -
<o:messages>
is now also supported in iterating components -
480727e -
@ViewScoped
unload now uses newNavigator.sendBeacon
API when available for faster unload (Beacon is basically fire-and-forget and ignores the response) -
c62dd9f -
Inversed behavior of
<o:tagAttribute>
so that it doesn't anymore block inherited attributes/parameters from parent tags, but instead blocks the inheritance towards child tags; this allows more a natural way of extending existing tag files having<o:tagAttribute>
-
#122 -
#339 -
CDNResourceHandler
doesn't anymore require the target resource to be present in web project too -
#25 -
@FacesConverter
will now skip converters having a constructor takingClass
argument -
#349 -
NestedFormsChecker
is now more lenient as to forms nested in a<p:dialog>
Fixed in OmniFaces 2.6
-
#315 -
MyFaces incompatibility when
<o:inputFile>
is used with bothrequired="true"
andaccept
attributes (MyFaces unexpectedly gives an emptyPart
instance instead ofnull
when no file is selected) -
#318 -
@Eager
blocked deployment in Jetty -
#322 -
ValidateMultipleFields
didn't explicitly callFacesContext#renderResponse()
, causing update model values phase to be still invoked when there's no other validation fail on the same form -
99e11c7 -
02f43ac -
82ba972 -
Several path matching fixes and improvements to
MultiViews
-
480727e -
@ViewScoped
unload didn't recognize user definedonbeforeunload
function -
23d7baf -
FullAjaxExceptionHandler
incompatibility with Deltaspike due to a change in OmniFaces 2.5 (Deltaspike didn't expect theLifecycle#render()
to be ever invoked withoutLifecycle#execute()
and broke with NPE) -
#333 -
FullAjaxExceptionHandler
ignoredorg.omnifaces.EXCEPTION_TYPES_TO_UNWRAP
due to a refactoring mistake in OmniFaces 2.5 -
#337 -
Beans#getReference()
broke in producer methods when where the now deprecatedBeanManager.INSTANCE.getReference()
worked fine -
#342 -
#347 -
<o:validateBean>
failed in specific composite component cases
What's new in OmniFaces 2.5.1?
Release date: 21 September, 2016
Fixed in OmniFaces 2.5.1
-
#313 -
<o:validateBean>
incorrectly skipped validating whole bean byvalue
after a refactoring mistake
What's new in OmniFaces 2.5?
Release date: 15 September, 2016
Added in OmniFaces 2.5
-
#278 -
FullAjaxExceptionHandler
now supports a new context paramorg.omnifaces.EXCEPTION_TYPES_TO_IGNORE_IN_LOGGING
where you can specify exception types to ignore in logging -
#279 -
Added
ExpressionInspector#getMethodReference()
to resolve base and method of a method expression -
#188 -
Bunch of new
createConverter()
andcreateValidator()
convenience methods onFaces
-
#181 -
Throw
IllegalStateException
during development stage when there's a nested form -
#235 -
New
<o:inputFile>
which extends<h:inputFile>
with support formultiple
,directory
,accept
andmaxsize
attributes, along with built-in validation onaccept
andmaxsize
attributes. -
#287 -
#289 -
@GraphicImageBean
annotation to declare a bean as a public image service, along withof:graphicImageURL()
EL functions which should generate the desired URL -
#298 -
showMessageFor
attribute of multi field validators now supports a new keyword@global
which specifies that the message should be added as a global message -
#20 -
FacesViews
now supports theMultiViews
feature as known in Apache HTTPD + PHP world -
#305 -
Components#resetForm/resetInputs()
to reset state of input fields in given form or parent component
Changed in OmniFaces 2.5
-
#272 -
Cookies created in server side by
Faces
andServlets
utility classes are now by default alwaysHttpOnly
-
#281 -
#256 -
beans.xml
is now fully CDI 1.1 compatible andBeanManager
enum has been deprecated andBeans
utility class now always usesCDI.current().getBeanManager()
and further some old CDI 1.0 related workarounds have been removed -
#284 -
Beans
utility class now supports specifying qualifiers via varargs argument in a.o.resolve()
,getReference()
,getInstance()
, etc -
#285 -
RestorableViewHandler
has been renamed toOmniViewHandler
as it got more responsibilities -
#293 -
<o:highlight>
will now remove the highlight when the enduser starts using the input field -
#20 -
RequestParamProducer
has been renamed toParamProducer
as it also supports path parameters
Fixed in OmniFaces 2.5
-
#283 -
Weld 2.3.5 and newer issued warning WELD-000167 on
DynamicParamValueProducer
-
#234 -
Bypass Tomcat misbehavior during push bomb on
<o:socket>
-
#224 -
Silence Mojarra warning "Unable to save dynamic action" in
<o:moveComponent>
-
bedcddc -
@ViewScoped
unload didn't work when full state saving was enabled -
#294 -
<o:graphicImage>
didn't render itsid
attribute -
#297 -
UnmappedResourceHandler
failed serving RichFaces-specific resources -
#295 -
Constructor injection of
@Param
failed on dynamic (non-String) types
What's new in OmniFaces 2.4?
Release date: 1 July, 2016
Added in OmniFaces 2.4
-
0b190e4 -
Components#getCurrentActionSource/ActionExpressionsAndListeners()
which should ease a.o. logging JSF ajax actions -
#113 -
<o:url>
which fills the gap caused by absence of JSTL<c:url>
in Facelets -
#258 -
FullAjaxExceptionHandler
got newlogException
override which allows determining the log reason -
#257 -
of:reverseArray()
to reverse an array
Changed in OmniFaces 2.4
-
ebd78a7 -
f773bb6 -
Scripts generated by
<o:deferredScript>
andCombinedResourceHandler
have now by default acrossorigin="anonymous"
attribute which basically enables logging viawindow.onerror
in case script is served via CDN -
#250 -
Issue 98 of OmniFaces 2.1 was rolled back as it caused
<o:importConstants>
to not run anymore during postback, and the original problem appears to be fixed in newer Mojarra versions -
#251 -
of:formatThousandsUnit()
now also supports cutting down fractions of values lower than thousand -
#223 -
#266 -
@Param
now also supports injecting primitives and multi-valued parameters declared as typedList
or array likeList<String>
,List<Foo>
,String[]
andint[]
-
e0d8e0d -
56b03cd -
0e629e -
FacesViews
andFaces#getRequestXxx()
is now also compatible with existing URL rewrite filters running in front of it (which under the covers performs aforward()
) -
#243 -
OmniFaces does not anymore require
/META-INF/context.xml
when running on Tomcat+Weld
Fixed in OmniFaces 2.4
-
#228 -
<o:tree>
failed state saving when being dynamically created -
#236 -
@Param
didn't properly triggerFacesContext#isValidationFailed()
whenrequired="true"
is not satisfied -
#237 -
Faces#sendFile()
andFileServlet
incorrectly encoded spaces in filename as+
instead of%20
-
#238 -
JsfLabelMessageInterpolator
was missing the 2-argument overloaded method -
b149204 -
Bypass possible Google Chrome bug when
FileServlet
is used with Gzip enabled -
#227 -
#240 -
<o:validateBean>
failed in composite component inputs and also with dynamic properties in ui:repeat -
#234 -
<o:socket>
caused exceptions in Tomcat when code sends too many messages in short time -
0f554c0 -
FacesConfigXml#getSupportedLocales()
failed to parselanguage_COUNTRY
locales -
#248 -
#111 -
FullAjaxExceptionHandler
failed to handle exceptions during render response phase in two Mojarra-related corner cases -
#252 -
of:formatThousandsUnit()
incorrectly trimmed trailing zeroes from non-fractional integer numbers -
#245 -
#259 -
#199 -
@ViewScoped
destroyed too soon when<p:commandLink ajax="false">
was used, and unload submitted to the wrong URL when a forward navigation was used -
#264 -
ListIndexConverter
threwNumberFormatException
instead of conversion error when empty input was submitted -
#273 -
CombinedResourceHandler
failed in PrimeFaces 6.0 when a component requiring a new resource is dynamically created during an ajax request (instead of just conditionally rendered)
What's new in OmniFaces 2.3?
Release date: 1 April, 2016
Added in OmniFaces 2.3
-
#17 -
<o:socket>
for web socket based push which can be accessed via CDI@Push
-
72d3aae -
Servlets#getRemoteAddr()
to get request remote address, taking into account theX-Forwarded-For
header -
eef138e -
Beans#fireEvent()
to fire a CDI event object -
e3ee8fb -
Beans#isActive(scope)
to check if a scope is active without need to catchContextNotActiveException
-
#194 -
Faces#sendFile()
has now one more method accepting anOutputStream
callback -
#125 -
#202 -
<o:skipValidators>
to skip all validation during aUICommand
action or an ajax request -
a2c1473 -
of:formatThousands()
to round a number to nearest thousand with immediate "k", "M", "G", etc suffix and a precision of 3 digits, whereafter trailing zeroes in fraction are stripped -
#204 -
of:formatThousandsUnit()
to round a number to nearest thousand of given unit with "k", "M", "G", etc prefix and a precision of 3 digits, whereafter trailing zeroes in fraction are stripped -
#206 -
of:formatNumberDefaultForLocale()
to format a number in locale-default pattern of given locale -
#205 -
Faces#getViewName()
to get base name of current view (without extension) -
#196 -
FullAjaxExceptionHandler
now supports a new context paramorg.omnifaces.EXCEPTION_TYPES_TO_UNWRAP
where you can specify additional exception types to unwrap the root cause from. -
#216 -
FileServlet
now supports customizing 404 error handling and attachment file name. -
8dbd495 -
Ajax#load()
to load a script resource on complete of current ajax request.
Changed in OmniFaces 2.3
-
#178 -
<o:importConstants>
will not anymore include parent of an inner class in default value ofvar
attribute, so e.g.#{Parent$Inner}
will now be#{Inner}
-
214d189 -
BeanManager.INSTANCE.getReference()
is deprecated in favor ofBeans#getReference()
-
#218 -
<o:commandScript>
now supports declaring a namespaced function
Fixed in OmniFaces 2.3
-
84f6748 -
WebXml#isAccessAllowed()
incorrectly matched extension based URLs in prefix path checking -
b3d2ea5 -
When mapping FacesViews on
/
and triggering a 404 error, then Mojarra confusingly threw a "Response already committed" exception -
#187 -
<o:form>
didn't render HTML attributes such asstyleClass
when MyFaces is used -
#199 -
@ViewScoped
failed to initialize unload script when it's created for first time after an ajax navigation action -
#200 -
Components#findComponentInParents()
ran in an infinite loop when illegal client ID is supplied -
#208 -
@ViewScoped
didn't physically remove server side JSF view state during unload -
c972602 -
OmniPartialViewContext
will now invalidate session before redirecting toweb.xml
form login page (fixes WildFly's agressive caching of login page response which exposes as<partial-response>
XML visible in browser) -
#226 -
<o:tree>
failed to resolve#{cc}
when nested in composite component -
#225 -
<o:validateBean>
failed on string concatenated properties like#{bean[foo += bar]}
What's new in OmniFaces 2.2?
Release date: 24 November, 2015
Added in OmniFaces 2.2
-
#124 -
<o:commandScript>
got newautorun
attribute, allowing for immediate execution during window load event -
#118 -
<o:viewParam>
got newdefault
attribute, allowing to set a default value when no view param is present -
572c118 -
Faces#refresh()
andFaces#refreshWithQueryString()
which do basicallyredirect(getRequestURI())
; addedFaces#getRenderKit()
-
efd9347 -
Faces#getRenderKit()
which can obtain the render kit from the factory when there's no view around -
#157 -
Messages#isEmpty()
,Messages#isEmpty(clientId)
andMessages#isGlobalEmpty()
-
465a78d -
Added
FacesConfigXml#getSupportedLocales()
which returns an ordered list in contrary toFaces#getSupportedLocales()
-
#116 -
<o:form>
now supports<f|o:param>
children -
1c912f7 -
62949a3 -
ad44be1 -
5216b57 -
@ViewScoped
now listens on browser unload event and gets destroyed sooner -
#148 -
@ContextParam
which injects a<context-param>
value -
#1c912f7 -
Components#addScriptXxx()
methods which can add an inline script or script resource to head or body -
#167 -
Components#includeCompositeComponent()
overloaded method which takes an attribute map -
#149 -
Components#buildView()
andComponents#encodeHtml()
allowing local building and encoding of (simple) templates -
#119 -
<o:viewAction>
component which evaluatesif
attribute during invoke application phase - 1417fc0 - Added abstract template for "BalusC FileServlet" which supports a.o. cache and range (resume) requests
Changed in OmniFaces 2.2
-
55510fa -
Html5RenderKit
is deprecated in favor of JSF 2.2 passthrough attributes; it will be removed in OmniFaces 3.0 -
d364daf -
<f:event type="(pre|post)InvokeAction">
is now supported on all components -
#164 -
<o:importFunctions">
will now throw a clearIllegalArgumentException
on non-existing function -
#167 -
Migrated
Components#includeCompositeComponent()
to JSF 2.2 approach withcreateComponent()
Fixed in OmniFaces 2.2
-
6cf7123 -
96d5d17 -
CombinedResourceHandler
failed when resource name contains a query string, and ordering w.r.t. suppressed resources failed during synchronous postback in MyFaces -
#141 -
JNDI#lookup()
in GlassFish 4.x incorrectly threwNamingExcepion
instead of returningnull
-
f914b83 -
Components#getParams()
didn't considerConverter
ofParamHolder
-
#127 -
#179 -
Ajax#updateRow()
failed in paginated tables and p:columns -
#156 -
WebXml#findErrorPageLocation()
(andFullAjaxExceptionHandler
) didn't consider entire class hierarchy when matching exception types -
#150 -
<o:validateBean>
threw NPE on unrendered inputs -
#144 -
<o:validateBean>
threw IAE on boolean inputs -
#168 -
ResetInputAjaxActionListener
is now also compatible with RichFaces 4.5+ -
#166 -
@Eager
blocked deployment in Jetty -
#183 -
OmniPartialViewContext
failed to handleweb.xml
form login page redirect in MyFaces 2.2+ -
d82d6a0 -
<o:graphicImage>
generated illegal URL when OpenWebBeans managed bean is used
What's new in OmniFaces 2.1?
Release date: 3 June, 2015
Added in OmniFaces 2.1
-
0cd13ea -
<o:tagAttribute>
to explicitly declare a tagfile attribute which is only exposed in tagfile's own EL scope, to prevent pollution in EL scope of nested tagfiles -
51060ff -
FacesConfigXml
to getfaces-config.xml
entries which are not available via native JSF API (currently only a mapping of all<resource-bundle>
entries can be obtained) -
#100 -
CombinedResourceHandler
now supports server-side caching of combined resources viaorg.omnifaces.COMBINED_RESOURCE_HANDLER_CACHE_TTL
context param -
070e7b5 -
<o:graphicImage>
now also supports SVG images with explicittype="svg"
attribute andfragment
attribute for SVG view modes -
09f187d -
@Eager
now also supports JSF 2.2javax.faces.view.ViewScoped
-
2d640e0 -
@Cookie
to inject a HTTP request cookie in a CDI managed bean -
#114 -
Several shortcut functions on current HTTP request:
of:getRequestBaseURL()
,of:getRequestDomainURL()
,of:getRequestURLWithQueryString()
,of:getRemoteAddr()
-
#57 -
Faces
andFacesLocal
got newgetResourceBundles()
andgetBundleString()
methods -
82ace56 -
Servlets
got a newisFacesDevelopment()
method
Changed in OmniFaces 2.1
-
169bb7f -
GzipResponseFilter
default threshold is lowered from 500b to 150b to catch up modern hardware, and default mimetypes is extended withimage/svg+xml
-
#53 -
CacheControlFilter
does not run anymore when project stage is set to development -
#92 -
RestorableViewHandler
does not anymore try to restore the view as long as<o:enableRestorableView>
is never used
Fixed in OmniFaces 2.1
- #97 - All resource handlers (CDN, Combined and Unmapped) are made better compatible with other 3rd party component libraries (e.g. PrimeFaces ones which appends a version to query string)
-
ed34f1d -
bb92fba -
83b9c6e -
a0884ac -
Serialization-related issues in several taghandlers (and
Callback
interfaces) when newjavax.faces.SERIALIZE_SERVER_STATE
context param is set totrue
-
#83 -
NoAutoGeneratedIdViewHandler
failed when view state ID rendering was enabled -
#98 -
<o:importConstants>
failed in composite components in Mojarra -
#45 -
<o:deferredScript>
and<o:onloadScript>
failed during postbacks on stateless views -
e406bd4 -
<o:param>
for output format failed in MyFaces by rendering children anyway - #133 - CDI validation failed in Tomcat + OpenWebBeans
-
#132 -
#{startup}
wasn't eagerly initialized -
500019e -
SelectItemsIndexConverter
didn't properly update when new items are added during invoke application -
38d0330 -
UnmappedResourceHandler
memory leak on composite components
What's new in OmniFaces 2.0?
Release date: 24 November, 2014
Major in OmniFaces 2.0
- Dependencies are changed from Java 1.6, JSF 2.0, Servlet 2.5, EL 2.1 to Java 1.7, JSF 2.2, Servlet 3.0, EL 2.2 and CDI 1.1; as of now, OmniFaces 2.0 is still backwards compatible with JSF 2.1, but not with JSF 2.0 anymore
- OmniFaces initialization will explicitly fail if CDI
BeanManager
is unavailable during application startup Events
utility class has major method renames to clarify the meaningBeans
utility class doesn't takeBeanManager
anymore as argument
Added in OmniFaces 2.0
-
c83e4ab -
NoAutoGeneratedIdViewHandler
which throws a runtime exception when an autogenerated JSF client ID is being rendered -
ca1e625 -
<o:viewParamValidationFailed>
which enables sending either a redirect or error status on validation failure of view parameters -
85bfbdf -
<o:graphicImage>
which is capable of referencing abyte[]
orInputStream
property with optional support for data URI format -
d598611 -
@Param
now supports directly injecting the (auto-converted) value -
da6940a -
<o:moveComponent>
via which components, facets and behaviors can be moved at runtime to a target component in various ways -
2286fd4 -
<o:resolveComponent>
via which a component can be looked up by its ID and a reference to it put in various scopes -
82547a7 -
New
BeansLocal
utility class next toBeans
class with the same philosophy asFaces
/FacesLocal
-
372dfde -
04b0110 -
6d1b75a -
2647e68 -
Servlets
utility class got a bunch of new methods related to cookies and JSF -
#39 -
Default validation message of
ValidateMultipleFields
components can now be supplied via<message-bundle>
-
3cda0b2 -
CDNResourceHandler
andCombinedResourceHandler
can now be disabled via aweb.xml
context param supporting a request based EL expression -
#33 -
<o:validateBean>
now supports validating beans at the class level
Changed in OmniFaces 2.0
-
f8f84aa -
<o:viewParam>
enables support for@NotNull
andPre/PostValidateEvent
even when parameter is not specified, on contrary to<f:viewParam>
-
9fa0c3b -
Html5RenderKit
is now not forgiving anymore on broken renderers that don't pass the current component to thewrite
methods (fixes "plain HTML" messup) -
#47 -
Skip null/empty values in
<o:validateOrder>
as that's actually the responsibility ofrequired="true"
Fixed in OmniFaces 2.0
-
bf833e3 -
Set system default timezone in CDI
@FacesConverter
whenweb.xml
context param says so -
9870108 -
Components#hasInvokedSubmit()
failed in iterating components such asUIData
andUIRepeat
-
#51 -
Fixed
<o:massAttribute>
to only consider own children instead of those of parent -
#65 -
GzipResponseFilter
is made better compatible with Servlet 3.1 containers
What's new in OmniFaces 1.8.3?
Release date: 3 June, 2015
Fixed in OmniFaces 1.8.3
What's new in OmniFaces 1.8.1?
Release date: 3 June, 2014
Fixed in OmniFaces 1.8.1
- During fixing issue 35 some
CombinedResourceHandler
code necessary for dealing with<o:deferredScript>
was accidentally removed, causing those to not be suppressed from head (and thus effectively included twice).
What's new in OmniFaces 1.8?
Release date: 2 June, 2014
Added in OmniFaces 1.8
WebXml#getFormErrorPage()
to get web.xml configured location of the FORM authentication error page<o:deferredScript>
which is capable of deferring JavaScript resources towindow.onload
Faces#addResponseCookie()
got 2 new overloaded methods whereby domain and path defaults to current request domain and current pathComponents#isRendered()
which also checks therendered
attribute of all parents of the given component<o:massAttribute>
which sets the given attribute on all nested componentsFacesMessageExceptionHandler
which sets any caught exception as a global FATAL faces message<o:cache>
has newdisabled
attribute to temporarily disable the cache and pass-through children directly@Eager
annotation to eagerly instantiate request-, view-, session- and application scoped beans<o:viewParam>
skips converter fornull
model values so that query string doesn't get polluted with an empty string- Small amount of utility methods and classes, e.g. method to check CDI annotations recursively in stereotypes, shortcut method to obtain VDL, etc
Changed in OmniFaces 1.8
CombinedResourceHandler
now also recognizes and combines<o:deferredScript>
UnmappedResourceHandler
now also recognizes PrimeFaces dynamic resources usingStreamedContent
Fixed in OmniFaces 1.8
- Assume
RuntimeException
inBeanManager#init()
as CDI not available (fixes deployment error on WAS 8.5 without CDI enabled) - Use "
-
" instead ofnull
as default value to workaroundnoSelectionOption
fail withGenericEnumConverter
<o:param>
shouldn't silently convert the value toString
(fixes e.g.java.util.Date
formatting fail in<o:outputFormat>
)- Fixed
javax.enterprise.inject.AmbiguousResolutionException
in subclassed@FacesConverter
and@FacesValidator
<o:messages>
failed to find thefor
component when it's not in the same parent<o:conditionalComment>
shouldn't XML-escape theif
value, enabling usage of&
characterUnmappedResourceHandler
broke state saving when partial state saving is turned offCombinedResourceHandler
didn't properly deal with MyFaces-managed resources
What's new in OmniFaces 1.7?
Release date: 12 January, 2014
Added in OmniFaces 1.7
- New
omnifaces:fixviewstate.js
script which should automatically fix JSF issue 790 - Added
invalidateAll
attribute to disable invalidating valid fields, and add support forshowMessageFor="@invalid"
to show message for invalidated fields only - New
ValueChangeValidator
which runs only when the submitted and converted value is really changed as compared to the model value - Added
Faces#getBookmarkableURL()
methods takingParamHolder
instances as value - Added
Beans#getInstance()
andBeans#getActiveInstances()
methods returning concrete (non-proxied) instances - New
CacheControlFilter
which can control cache-related headers of the response - New
<o:validateMultiple>
tag which allows validating multiple fields via a custom validator method or implementation - Added
WebXml#getSessionTimeout()
to get web.xml configured session timeout - Added
SortedTreeModel
which holds the tree children in aTreeSet
Changed in OmniFaces 1.7
Fixed in OmniFaces 1.7
- Store constants of
<o:importConstants>
in an ordered map instead of an unordered map WebXml
initialization failed in Weblogic because it attempts to load it as CDI managed bean- Broken 404 "not found" error handling of
CombinedResourceHandler
(it threwIllegalArgumentException
instead) GenericEnumConverter
failed in composites which are reused more than once in same view and on enums with custom bodieso:validateOrder
threw NPE on non-required fields
What's new in OmniFaces 1.6.3?
Release date: 18 October, 2013
Fixed in OmniFaces 1.6.3
- Fixed throwing
NoClassDefFoundError
when no JNDI is present (like e.g. in Google App Engine by default)
What's new in OmniFaces 1.6.2?
Release date: 13 October, 2013
Fixed in OmniFaces 1.6.2
- Fixed throwing
IllegalStateException
when no CDI is present (like e.g. in Tomcat by default)
What's new in OmniFaces 1.6.1?
Release date: 5 October, 2013
Added in OmniFaces 1.6.1
- New
BeanManager
enum which allows trying to get a CDI managed bean instance without any CDI dependency - New
Beans
utility class to ease working with CDIBeanManager
API
Fixed in OmniFaces 1.6.1
What's new in OmniFaces 1.6?
Release date: 19 September, 2013
Added in OmniFaces 1.6
- Injecting, converting and validating HTTP request parameters via CDI
@Param
(say, the CDI alternative to<f:viewParam>
) - Transparent support for dependency injection (CDI and EJB) inside
@FacesConverter
and@FacesValidator
ValueChangeConverter
, a base class which converts only when the submitted value is really changed as compared to the model valueComponents#getCurrentCommand()
which returns the currently invoked command component (useful for logging)Components#createValueExpression()
,#createMethodExpression()
,#createVoidMethodExpression()
,#createActionListenerMethodExpression()
and#createAjaxBehavior()
- New
JNDI
utility class Faces#getBookmarkableURL()
,#getRequestHostname()
and#setResponseStatus()
message
attribute for<o:messages>
to display a global message in case any of the infor
specified components has a faces message- Added
logException
method toFullAjaxExceptionHandler
so that it can be overridden for more fine grained control of logging - New
FacesLocal
utility class which extendsFaces
utility class with methods which takeFacesContext
as argument - CDI compatible
@ViewScoped
annotation specifically for JSF 2.0/2.1 useRequestURI
attribute for<o:form>
to submit to exactly the same URL as in browser's address bar, with query stringof:splitArray()
andof:splitList()
to split an array or list in subarrays or sublistsof:formatPercent()
to format a number as a percentage
Changed in OmniFaces 1.6
showMessageFor
attribute of multi field validators now supports a space separated collection of client IDs where the message should be shown- CDN resource handler now supports: 1) always being enabled, also during development stage, 2) wildcard configuration, and 3) EL resolving in CDN URL
Faces#redirect()
will not useString#format()
anymore when no params are supplied, this enables developers to pass already-encoded URLs toFaces#redirect()
Fixed in OmniFaces 1.6
Json#encode()
incorrectly escaped singlequotes (was causing validation error injQuery.parseJSON()
)GzipResponseFilter
returned gzipped content as plain text in WebSphere 8.5 / Liberty<o:onloadScript>
rendered its body as plain text during an@all
render and didn't work anymore during a postback since Mojarra 2.1.24<o:highlight>
threw duplicate component ID error in TomEE 1.6.0
What's new in OmniFaces 1.5?
Release date: 10 June, 2013
Added in OmniFaces 1.5
- Decode
UIComponent
children in<o:param>
when novalue
attribute is specified (so that you can specify JSF/HTML code asoutputFormat
parameter) - Allow endusers to specify custom passthrough attributes for
Html5RenderKit
- Added new
includeRequestParams
attribute to<o:form>
<o:messages>
which extends<h:messages>
with support for multiple client IDs infor
attribute, ability to disable HTML escaping and ability to perform markupless rendering like<ui:repeat>
Components#includeCompositeComponent()
to programmatically include a composite component in given parent component- Add list based alternatives for the converters that automatically convert based on select items: omnifaces.ListIndexConverter and omnifaces.ListConverter
- Message interpolator for Bean Validation that allows a component's label to be inserted in the middle of a message
- New
Faces#getRequestURLWithQueryString()
which returns full request URL with query string - Added
reset
attribute to<o:cache>
as an alternative for the programmatic resetting of a cache entry - Added converters for an
Iterable
toList
andDataModel
, so these can be used in<ui:repeat>
and<h:dataTable>
- New protected methods
FullAjaxExceptionHandler#findExceptionRootCause()
and#findErrorPageLocation()
so that it can easier be subclassed - EL functions
of:toJson()
,of:replaceAll()
andof:matches()
Changed in OmniFaces 1.5
- Obtain current component via
UIComponent#getCurrentComponent()
when it'snull
inHtml5RenderKit
(so that it also works with PrimeFaces input components) - Improved
CallbackPhaseListener
to support multiple callbacks instead of only one; the oldEvents#setCallbackXxx()
methods are now deprecated - Support
@all
,@form
and@this
inAjax#update()
- Moved
Faces#includeFacelet()
toComponents#includeFacelet()
Fixed in OmniFaces 1.5
- Add missing
createResource()
overrides to allResourceHandler
s (so that it also works in combination with other resource handlers which don't usecreateResource(library, name)
) - Normalize view ID in
RestorableViewHandler
(so that it also works when another suffix mapping is used than *.xhtml, this worked in 1.3 but broke in 1.4) - Add missing support for
noSelectionValue
attribute inSelectItemsConverter
- Action URL generation for FacesViews didn't take other view handlers into account, now it does (so that it also works with PrimeFaces 4.0 Dialog framework).
What's new in OmniFaces 1.4.1?
Release date: 12 March, 2013
Fixed in OmniFaces 1.4.1
What's new in OmniFaces 1.4?
Release date: 11 March, 2013
Added in OmniFaces 1.4
Faces#getMetadataAttribute()
andgetMetadataAttributes()
utility methodsfor
attribute in<o:validator>
so that it can target inputs in compositesTreeModel#getNextSibling()
andgetPreviousSibling()
methodsof:coalesce()
function<o:importFunctions>
taghandler to import public static non-void methods of a given type as EL functionsof:getMonth()
,of:getShortMonth()
,of:getDayOfWeek()
andof:getShortDayOfWeek()
functions<o:param>
which extends<f:param>
with support for aConverter
UnmappedResourceHandler
which removes the JSF prefix/suffix mapping from resource paths- Major overhaul of FacesViews; support for custom locations (including root) and extension, plus configurable actions when resource with extension or resource on configured path is requested
- Programmatically getting list of welcome pages and checking if access is allowed to a URL according to security constraints
- OmniFaces version will now be logged to webapp log in this format:
INFO: Using OmniFaces version 1.4
Changed in OmniFaces 1.4
- Support for Javabeans in
Json#encode()
as used byAjax#data()
- Recognize and workaround for JUEL 2.2.5 and before bug in
<o:methodParam>
(not needed for JUEL 2.2.6 and later) - Support
spellcheck
attribute onHtmlInputText
andHtmlInputTextarea
byHtml5RenderKit
- Support
autofocus
,pattern
andplaceholder
attributes onHtmlInputSecret
byHtml5RenderKit
- Delegate rendering to JSF when currently not in render response phase in
FullAjaxExceptionHandler
- Skip
AbortProcessingException
inFullAjaxExceptionHandler
- Support
java.util.TimeZone
argument inof:formatDateWithTimezone()
- Support
com.example.SomeClass.SomeEnum
notation on top ofcom.example.SomeClass$SomeEnum
for inner enums in<o:importConstants>
- Skip unrendered components during component tree visit of
ResetInputAjaxActionListener
ELException
will now also be unwrapped byFacesExceptionFilter
in order to improve exception handling in MyFacesELException
will now also be unwrapped byFullAjaxExceptionFilter
in order to improve ajax exception handling in MyFaces
Fixed in OmniFaces 1.4
GzipResponseFilter
incorrectly skipped gzip when the written data was not within servletcontainer's and Facelets buffer size- Fix initializaiton ordering problem of FacesViews in among others Glassfish server and removed accidentally introduced Servlet 3.0 dependency
What's new in OmniFaces 1.3?
Release date: 20 December, 2012
Added in OmniFaces 1.3
- Update specific
UIData
rows and columns programmatically <o:enableRestorableView>
to preventViewExpiredException
on a particular view- New
validationFailed
attribute on<o:validateXxx>
multi field validators <o:validateBean>
which allows controlling bean validation on a per-UIInput
andUICommand
basis<o:validateUniqueColumn>
to validate input elements in singleUIColumn
on uniquenessof:formatNumberDefault()
shortcut EL function to substitute<f:convertNumber>
without patternSelectItemsIndexConverter
which converts select items by their indexof:joinArray()
,of:joinCollection()
andof:joinMap()
functions- New
message
attribute on<o:validator>
which allows specifying validator message on a per-validator basis <o:commandScript>
which generates a JavaScript function handler tojsf.ajax.request
, so that JSF ajax requests can be invoked by JavaScriptof:addXxx()
andof:xxxBetween()
functions to manipulate/calculate datesof:getDaysOfWeek()
andof:getShortDaysOfWeek()
functions to retrieve a mapping of days of week
Changed in OmniFaces 1.3
- Support for RichFaces specific resources in
CombinedResourceHandler
- Support for
autofocus
inHtmlCommandButton
byHtml5RenderKit
Fixed in OmniFaces 1.3
- Broken delegation of
OmniPartialViewContext
in RichFaces (caused by RichFaces specific design error) - Broken delegation of
OmniPartialResponseWriter
in MyFaces (caused by MyFaces specific design error) - Broken initial state of
EditableValueHolderStateHelper
which is used ino:tree
(which would only cause input components to appear in an invalidated state on initial request — and thus also incorrect highlighting in e.g. PrimeFaces) and added check on visit hint to skip iteration
What's new in OmniFaces 1.2?
Release date: 20 October, 2012
Added in OmniFaces 1.2
- Character encoding filter
- Resource handler which replaces resource URLs by CDN URLs
- Ignore validation failures on submit
- Store outputFormat result in a variable
- Several
of:format()
shortcut EL functions to format strings in EL Ajax
utility class to ease programmatically updating components, executing callback scripts and injecting variables in JS scopeOmniPartialViewContext
for theAjax
utility class, better exception handling during rendering of ajax response byFullAjaxExceptionHandler
and the fix of no-feedback problem when the view is expired during ajax request on a restricted page- New multi field validators which validates if ONLY ONE or ONE or NONE of the given inputs has been filled out
of:formatCurrency()
andof:formatNumber()
EL functionsGenericEnumConverter
for use inUISelectMany
components withList<Enum>
- Some new utility methods in
Faces
andComponents
Changed in OmniFaces 1.2
- Support to render JS/CSS inline by
CombinedResourceHandler
- Changed generation of combined resource IDs by
CombinedResourceHandler
so that it's now reversible - Improved
rendered
attribute of<o:treeNodeItem>
so that it can now also see<o:tree>
var
andvarNode
- Improved components attribute of multi field validators so that it's resolved relative to parent
UINamingContainer
instead of to parentUIForm
- Improved multi field validators to recognize
UISelectBoolean
components as well - Improved
FullAjaxExceptionHandler
to better handle exceptions during ajax render response phase - Improved
<o:highlight>
to apply style class on associated labels as well
Fixed in OmniFaces 1.2
- Serialization and state saving issues in
<o:cache>
- Broken behaviour in MyFaces when using null values in
SelectItemsConverter
- Removed accidentally introduced Servlet 3.0 dependency in
GzipResponseFilter
and improved recognition of non-gzippable responses (content range, etc) - Broken behavior of
ResetInputAjaxActionListener
when both PrimeFaces and RichFaces is used in same webapp
What's new in OmniFaces 1.1?
Release date: 10 July, 2012
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 stringHTML5RenderKit
which adds support for several HTML5 specific attributes toUIForm
andUIInput
components- Importing constant values into EL scope with
<o:importConstants>
- 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()
method - Support for
web-fragment.xml
inFullAjaxExceptionHandler
- Support to exclude or suppress specific resources in
CombinedResourceHandler
- Support for specific ordering type inside
<o:validateOrder>
Fixed in OmniFaces 1.1
- Broken behaviour inside
UIData
components inResetInputAjaxActionListener
- Incorrect behaviour on synchronous postbacks and NPE on inline scripts in
CombinedResourceHandler
What's available in OmniFaces 1.0?
Release date: 01 June, 2012
Features already available in initial OmniFaces 1.0 release
- Conditional comment rendering for IE
- Highlighting fields that failed validation
- Executing scripts on load of every (ajax) response
- OutputLabel automatically setting label of associated input component
- Include Servlets and JSP pages in Facelets
- Tree with full custom markup per level (useable for various recursive use cases)
- Stateless view parameter
- Automatic conversion of model objects in drop-downs and other select components
- Reset for input fields making them always updateable via ajax
- Ajax aware exception handler
- Extensionless URLs without need to register individual pages
- Proper 404 for
FacesFileNotFoundException
HttpFilter
convenience class as analogy toHttpServlet
- Collections of EL functions for dealing with arrays, conversion, dates and strings
- Convenience managed beans for the current time and server startup time
- Combining separate scripts and stylesheets to reduce HTTP requests
- Render-time evaluation for
<f:converter>
and<f:validator>
attributes - Passing a method expression into Facelets tag
- Collection of Java methods for dealing with components, events, exceptions, messages and JSF in general
- Checkbox with required attribute that works intuitively
- Multi-field validators, for "all or none", "all equal", "one or more", "all in order" and "all unique" validations