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.
Now supports a date value that is initially null. Standard josef messages now contains translations for "Day,Month,Year".
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 ...
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.
Added a new method: getJsfStandardStringMessage that gets a standard jsf message from Josef's Jsf standard message bundle.
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.
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.
Added a new method: createErrorMessageFromLocalizedRuntimeException
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.
Added a new getJosefStringMessage to get a String message from Josef's bundle.
Added a new method: createValueExpression(...).
timeZoneListener now responds to new timeZone cookie instead of the previous timeZoneOffset.
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.
Added this converter.
Now supports time the user's time zone. Previously only a global time zone at the ApplicationSettingsBean level was available.
The walkTheTree methods now accept a uiComponent instead of a UIViewRoot, to make them more generic.
Added a new method to get the language. This is necessary for proper accessibility. ukTelephoneNumber
Added new composite component. Still work in progress.
Added new composite component. Still work in progress.
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".
Now supports from 1 to 99 stylesheets.
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.
Moved the method getYearFromDateObject(Object, Object) to YearBean.
Added a getYearRange method. This method returns a value suitable for the yearRange attribute of a jp:date.
getStringAttribute would result in a NullPointerException when the attribute was missing. The method now works as documented.
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.
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.
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.
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).
Did not respond to the readonly status of containers, in which the Select... component was nested, only to the readonly status of the form.
New converter for the new UKSortCode composite component.
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.
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.
Corrected an error in getPreviousStartableStepWithinFlow, causing the previous step to not be found. This solved the problem in the conditional flow example.
Added isComponentsContainerReadonly method.
Added a new Date.java backing component to back the date.xhtml component.
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.