The lambda expressions have been removed from the log statements as WebLogic 12.1.3 does not handle them. The resulting error looked like this: "Unknow type constant" error. Note: The WebLogic error actually contains the typo! WebLogic 12.1.3 is still a J2EE6 container that should work with lambda expressions. However, WebLogic 12.1.3 only supports JSF 2.1.*. Higher versions containing a solution to this problem are not supported by WebLogic.
org.josef.web.jsf.util.JsfMessageUtil
Corrected an error where createErrorMessageFromLocalized(Runtime)Exception caused an incorrect detail message to be added.
The added detail messages was equal to the message key plus an appended "_detail".
Now when the ..._detail key is missing, no detail message will be set.
org.josef.web.jsf.binding.jcc.DateSelect
Now supports a date value that is initially null.
Standard josef messages now contains translations for "Day,Month,Year".
org.josef.web.jsf.converter.*
All converters now throw exceptions with a FacesMessage as a parameter instead of a String.
The reason is that we noted that the String message is never shown.
Instead the default error message for the component was shown.
For an input item, this would be something like: Conversion error ...
org.josef.web.jsf.component.UIMessageHtmlRenderer
org.josef.web.jsf.component.UIMessagesHtmlRenderer
org.josef.web.validator.ZipCodeValidator.
Now supports a message attribute that can be used to override the standard error message.
The message supports a single argument, namely the zip code entered by the user.
org.josef.web.jsf.util.JsfMessageUtil
Added a new method: getJsfStandardStringMessage that gets a standard jsf message from Josef's Jsf standard message bundle.
org.josef.web.jsf.binding.jcc.InputText
Solved the problem with an empty requiredMessage attribute.
Previously the required message you got was not properly translated.
This was due to a mojarra bug mentioned in the next link: https://java.net/jira/browse/JAVASERVERFACES-1980
The problem has been fixed in 2.2.0 but won't be back ported.
Technically the problem is solved by not reading the properties file bound to the backing component (inpuText.properties)
but from the standard JSF messages instead (not the original but Josef's translation of these messages).
Since these messages are part of josef-jar-faces they should be publicly accessible.
The getRequiredMessage has been changed to use the new method: getJsfStandardStringMessage, mentioned above.
org.josef.web.jsf.util.JsfSelectItemUtil
The method getLabelFromSelectItemsAndValue now takes null values into account.
A "No Selection" select item may have a null value for example that previously caused a NullPointerException.
org.josef.web.jsf.util.JsfMessageUtil
Added a new method: createErrorMessageFromLocalizedRuntimeException
org.josef.web.jsf.util.JsfSelectItemUtil.
Changed hasSingleSelectItem to hasZeroOrOneSelectItem.
The idea is that when there are no items to select, the select may be displayed as an output text,
just as is the case when there is a single item to be selected.
Other classes were updated to reflect this change.
org.josef.web.jsf.util.JsfMessageUtil
Added a new getJosefStringMessage to get a String message from Josef's bundle.
org.josef.web.jsf.util.JsfExpressionUtil
Added a new method: createValueExpression(...).
org.josef.web.jsf.bean.UserSettingsBean
timeZoneListener now responds to new timeZone cookie instead of the previous timeZoneOffset.
org.josef.web.jsf.converter.CodeDescriptionConverter
Dropped the value attribute on the FacesConverter annotation, effectively making this converter implicit for
CodeDescription objects.
Previously you had to explicitly use the converter.
Removed the dependency upon PrimeFaces.
Classes in the Flow package for example depended upon PrimeFaces' MenuItem for example.
These classes are moved to josef-demo-web-primefaces.
org.josef.web.jsf.converter.TimeZoneConverter
Added this converter.
UserSettingsBean
Now supports time the user's time zone.
Previously only a global time zone at the ApplicationSettingsBean level was available.
org.josef.web.jsf.util.JsfTreeUtil
The walkTheTree methods now accept a uiComponent instead of a UIViewRoot, to make them more generic.
org.josef.web.jsf.bean.UserSettingsBean
Added a new method to get the language.
This is necessary for proper accessibility.
ukTelephoneNumber
Added new composite component.
Still work in progress.
ukMobileTelephoneNumber
Added new composite component.
Still work in progress.
org.josef.web.jsf.binding.jcc.InputText
Corrected an error in isDisplayReadonlyOfTypeOutput method.
When the inpuText is used in another composite component the attribute is passed with a null value,
instead of with the default value defined in this component.
Hence a value of null for the displayReadonlyType attribute should be interpreted as a value of "output".
org.josef.web.jsf.bean.ApplicationSettingsBean
Now supports from 1 to 99 stylesheets.
org.josef.web.jsf.flow.*;
Corrected an error where the index of the current step was not properly updated after the user had clicked on a previous
flow step.
This caused highlighting of the currently selected flow, not to work.
Classes now have a proper toString() method that will aid in debugging.
org.josef.web.jsf.binding.jcc.MontYear
Moved the method getYearFromDateObject(Object, Object) to YearBean.
org.josef.web.jsf.bean.YearBean
Added a getYearRange method. This method returns a value suitable for the yearRange attribute of a jp:date.
org.josef.web.jsf.util.JsfComponentUtil
getStringAttribute would result in a NullPointerException when the attribute was missing.
The method now works as documented.
org.josef.web.jsf.component.UIMessageHtmlRenderer
Now creates an id for the image , equal to: The client Id of the corresponding component, with "_img" appended to it.
This makes it easier to locate an image within Selenium.
org.josef.web.jsf.validator.DateRangeValidator
Now dynamically evaluates its min/max date attributes when used within a MonthYear component.
Converters behaved "strangely" due to state not being saved.
This was caused by not extending AbstractStateHolder.
The converters were also made serializable.
org.josef.web.jsf.validator.DutchGiroAccountNumberValidator
Previously the validate method could get a String containing an integer value that would not fit in an Integer.
This has been solved by moving the check for the length up in the hierarchy.
Dropped the UKSortCodeConverter in favor of using the SpecialMaskConverter.
org.josef.web.jsf.binding.jcc.AbstractSelect
Changed the way to determine whether the Select... component needs to be rendered.
Effectively displaying a Select... component as output by default (that is to say, as text).
Select...xhtml
Did not respond to the readonly status of containers, in which the Select... component was nested, only to the readonly
status of the form.
UKSortCodeConverter
New converter for the new UKSortCode composite component.
PatternValidator
Is now able to validate objects that are not of type String by executing a toString() on the value to be validated.
Added JsfMessages_en_GB.properties file since we "discovered" that the order of day and months differs between the US and
the UK.
org.josef.web.jsf.component.UIMessagesHtmlRenderer
Previously this renderer would not render the messages component when no messages existed.
After an ajax call there might be messages but since the messages component would not be rendered,
it could not be the target of an ajax update attribute.
Rendering the messages component with the style: "display:none;", effectively does not render (display actually)
the component, while it still can be the target of an ajax update attribute.
org.josef.web.jsf.flow.AbstractFlow
Corrected an error in getPreviousStartableStepWithinFlow, causing the previous step to not be found.
This solved the problem in the conditional flow example.
org.josef.web.jsf.bean.FormBean
Added isComponentsContainerReadonly method.
Added a new Date.java backing component to back the date.xhtml component.
org.josef.web.jsf.util.JsfNafvigationUtil
Added new methods to handle navigation.
The new method handleNavigation(...) now by default adds the faces-redirect query string parameter to the outcome,
provided the outcome is non-null to begin with.