date.xhtml
Added option to skip the ajax update of this component.
Sometimes this component is used in combination with an ajax update of the form anyway, so Josef's update can be skipped to
save an extra server round-trip.
Note: The developer is now responsible for updating the date component, so if the form is not already updated,
make sure that you ate least update this date component.
inputText.xhtml
Now supports autocomplete attribute which by default is true.
Fields containing sensitive information like bank accounts for example turn autocomplete off by default.
Naturally you can override this behavior by setting autocomplete="on" on an individual basis.
monthYear.xhtml
Added option to skip the ajax update of this component.
Sometimes this component is used in combination with an ajax update of the form anyway, so Josef's update can be skipped to
save an extra server round-trip.
Note: The developer is now responsible for updating the monthYear component as well.
dateSelect.xhtml
Now supports a date that is initially null.
Added a selectItem for a null date, for day, month and year hint the user.
The user sees these hints as long as no complete date has been selected.
Added a required label attribute.
Added a dayStyle, monthStyle and yearStyle.
Dropped the requiredMessage attribute
org.josef.util.EmailValidationPattern
Due to the new TLD (top level domain) names, I had to relax the validation a bit.
Previously the RFC 2822 validator contained an exhaustive list and the BASIC validator checked for a tld of length 2 to 4
(inclusive).
Both validators now accept a length of 2 to 15 characters (inclusive).
dateSelect.xhtml
Now supports ajax change event.
It also updates the backing bean's value immediately.
Previously the form had to be submitted before a change was effective.
selectOneMenu.xhtml
Dropped the widgetVar from the implementation as it wasn't even defined in the interface.
selectOneRadio.xhtml
Dropped the widgetVar from the implementation as it wasn't even defined in the interface.
Now uses the Primefaces selectOneRadio again since it looks like the widgetVar caused the malfunction mentioned under
3.0.29.
monthYear.xhtml
Dropped the usage of the widgetVar attribute.
It turns out that the widgetVar was used incorrectly in cases where the programmer did not specify a widgetVar attribute
since it resulted in the same widgetVar name being created multiple times.
When you had 4 monthYear components on your screen without a widgetVar then 4 widgetVars with the name "Months" for example
would be created.
This can be fixed but has been left out for now.
inputText.xhtml
Added option to skip the ajax update of this component.
Sometimes this component is used in combination with an ajax update of the form anyway, so Josef's update can be skipped to
save an extra server round-trip.
selectOneRadio.xhtml
Is reverted back to using h:selectOneRadio since using Primefaces caused multiple groups of radio buttons to not function
correctly.
Selecting a radio button in one group influenced the other radio button group, which is clearly unacceptable.
dateSelect.xhtml
Corrected an error in the style class that was generated for a month field.
Previously it incorrectly used "day" as the class instead of "month".
You can work around this problem by supplying your own monthStyleClass.
selectOneMenu.xhtml
Dropped the support for the widgetVar attribute.
Having this attribute caused clicking on one selectOneMenu to open a different selectOneMenu!
Others noted that selectOneMenu items are empty when the widgetVar attribute is used.
selectOneRadio.xhtml
Is now a primefaces component so it will have a different look now.
The look should be more in line with the other Primefaces components.
Almost components support a widgetVar with notable exceptions: bankIdentifierCode and selectOneRadio.
monthYear.xhtml
Switched to using change events instead of blurs.
This results in less posts.
Additionally, it is now possible to add you own ajax change event to this Month/Year component.
inputText.xhtml
The idInputGroup is now updated on a change event instead of a blur event.
This should cause less ajax calls and as a side effect solved some problems where forms kept scrolling.
dutchGiroAccountNumber.xhtml
dutchBankAccountNumber.xhtml
dutchBankGiroAccountNumber.xhtml
Removed the number converter since it converted numbers like "123 456" to 123.
Since 123 is a valid Dutch Giro account number it would then be accepted.
Composite components
Most components now use the partialSubmit="true" attribute so only the current field is posted.
Previously all fields were posted and then silently ignored on the server.
This option saves some data from being send to the server.
inputText.xhtml
Should now properly handle the requiredMessage attribute.
See also the change in the InputText backing component in josef-jar-faces.
ukBankAccountNumber.xhtml
The bank account number was not padded with zeroes.
This has been corrected.
Now supports clientBehavior for blur and change event on idUKBankAccountNumber.
ukSortCode.xhtml
Now supports clientBehavior for blur and change event on idUKSortCode.
Switched to Primeface 5.0.x
Almost all composite components that support the info tag, now allow for the attributes infoAt and infoMy.
These attributes can be used to position the overlayPanel that is used for the info text.
By default infoAt=left bottom and infoMy=left top.
You can use combinations of: left, right, top and bottom for these attributes.
For example: my="right top" aligns the right top position of the panel with the bottom left position of the info icon.
info.xhtml
Has been enhanced with an at and my attribute that correspond to the infoAt and infoMy attributes described above.
Additionally, it is now possible to add a style class to the overlayPanel, that is to say in addition to the josefInfoPanel
which is always added.
All composite components.
Solved the problem that an empty error message was shown for required fields without a value.
Checkout inputText.xhtml and xhtml.properties for the solution.
date.xhtml
Removed the requiredMessage attribute since it causes required fields that are left empty, to get an empty error message.
Dropping the requiredMessage solves this problem at the cost of not being able to supply your own error message for
required date fields.
I verified that Primefaces 5.0 does not solve the problem.
ukBankAccountNumber.xhtml
Now supports bank accounts from 6 to 8 digits.
Support for 9 or 10 digits has been dropped since BACS can only handle 8 digit accounts and it is really hard to automate
the conversion.
Almost all components support the "requiredMessage" attribute.
When a field is required but not filled by the user the text supplied to this atribute will be shown here instead of the
standard JSF text.
info.xhtml
Now supports a styleClass attribute.
Now uses PrimeFaces 4.0.10
Select...
All selects will now by default, be shown as an output text when there are no items to select from.
Previously there had to be exactly one select item but this requirement has now been relaxed.
info.xhtml
The overlay panel is now only rendered when there is info to render.
Now uses PrimeFaces (4.0.8).
selectManyCheckbox.xhtml
The layout attribute got a default value.
The bean attribute is not necessary anymore!
Previously each selectManyCheckbox required a bean to indirectly get the underlying value.
Since the bean is dropped, you have to change each and every usage of this component.
Currently your code looks something like this:
<jp:SelectManyCheckbox bean="#{selectManyTestBean}" id="ccNormalSelectManyCheckbox" label="#{bundle.testSelectManyCheckboxNormalLabel}" tooltip="#{bundle.testSelectManyCheckboxNormalTooltip}" value="normalValues"> <f:selectItems value="#{selectManyTestBean.stringSelectItems}"/> </jp:SelectManyCheckbox>
And it has to be changed to something like this:
<jp:selectManyCheckbox id="ccNormalSelectManyCheckbox" label="#{bundle.testSelectManyCheckboxNormalLabel}" tooltip="#{bundle.testSelectManyCheckboxNormalTooltip}" value="#{selectManyTestBean.normalValues}"> <f:selectItems value="#{selectManyTestBean.stringSelectItems}"/> </jp:selectManyCheckbox>
Note that the bean attribute is not required for the new component and that the value attribute requires change.
date.xhtml
Now supports dateSelect event.
Corrected error in displaying a readonly jp:date.
A date like 2013/07/28 (in DST period), when entered outside DST period, would be displayed as 2013/07/27.
So a day would be subtracted!
All composite components
Now use ui:composition instead of an html tag.
This avoids errors when using an accessibility verification tool.
All composite components based upon inputText
Now take the readonly attribute of its container into account.
Consider the next snippet:
<p:panel readonly="true"> <jp:inputText ... readonly="false"/> <jp:zipCode ..... readonly="false"/> </p:panel>
Previously the inputText would be readonly and the zipCode would be editable.
zipCode is based upon inputText and inpuText would look at its parent (which is the zipCode component) and see that it is
not readonly.
Hence the inputText was readonly and the zipCode was not.
This has been changed so both inputText and zipCode are now readonly since they both look at their parent
(which is the readonly panel).
selectBooleanCheckbox.xhtml
Now supports the change event.
ukMobileTelephoneNumber.xhtml
Added.
ukTelephoneNumber.xhtml
Added.
PaddingConverter
Added a new converter that can pad String values with a pad character.
See the modified ukBankAccountNumber composite component for how this new converter can be used.
ukBankAccountNumber.xhtml
Now uses the new PaddingConverter.
A bank account with 6 to 7 digits will be padded with zeroes.
inputText
Now supports keyup event.
All composite components now start with a lower case letter.
For example: <jp:inputText ...>
Date.xhtml
Now supports the yearRange attribute.
MonthYear.xhtml
When the renderInputText attribute is false, the input text is still rendered but hidden.
Previously, when the input text was not rendered, validation would not take place,
since the validator was attached to the month/year input text.
org.josef.web.jsf.validator.DateRangeValidator
This component does not evaluate the min and max dates at runtime anymore.
We discovered that the previous problems with this component were not caused by the lack of dynamic behavior,
but caused by the lack of validation when a MonthYear component did not show the month/year input text.
Note: The RelationalValidator does not work as expected in this release!
Since this validator never worked as expected this is not a show-stopper.
The DateRangeValidator now evaluates the min and max dates at runtime.
Currently this is a hack. I am working on a definitive solution.
Composite components
Nested <jp:Info ...> components now have an id of "idInfo".
Nested <jpInputState ...> components now have an id of "idInputState".
InputText.html
The pre/post image/text component now have id's.
Spinner.html
The pre/post image/text component now have id's.
BurgerServiceNummer.xhtml
Added a validator that checks for a minimum length of 8 characters..
UKBankAccountNumber.xhtml
Dropped the default="#{josefBundle.ukBankAccountNumberInfo}" since this always caused the info image to be showed,
even on the read-only summary page where the info text did not make sense.
So, if you want this text, simply add info="#{josefBundle.ukBankAccountNumberInfo}" to your UK bank account field.
Composite Components
Almost all composite components now use styleClass like this: styleClass="some style classes #{cc.attrs.styleClass}.
Some style classes may for example be: numeric dutchGiroAccount.
Previously these style classes were added as a default and were lost when overridden by the developer.
UKNationalInsuranceNumber.xhtml
New composite component, comparable to the Dutch BSN and American SSN.
UKSortCode.xhtml
Dropped the UKSortCodeConverter.
This component now uses the SpecialMaskConverter.
UKSortCode.xhtml
Added this new component used in the UK in combination with a bank account number.
UKBankAccountNumber.xhtml
Added this new component which represents a bank account number in the UK.
Date.xhtml
Now properly supports a minimum and maximum date.
Note: these only limit the visible dates on the calendar.
In the input field the user can still enter an out of range date.
Use the dateRangeValidator like this, to avoid this:
<jf:dateRangeValidator for="idInputDate" min="01/01/2012" max="01/01/2030"/>
Note: min and max accept either a String (US date format) or a date.
InputText.xhtml
Added ajax blur and change events.
Info.xhtml
Added styleClass="josefInfoPanel" attribute so the info panel can be styled.
Info.xhtml
The info component now uses an overlayPanel instead of a dialog.
This has two advantages: 1 it looks better and 2, it requires no java script.
CommandButton.xhtml
The value attribute is not longer required anymore.
This allows command buttons to have an icon only.
Date.xhtml
Added change and blur ajax events.
DutchBankAccountNumber.xhtml
DutchGiroAccountNumber.xhtml
DutchTelephoneNumber.xhtml
Now properly use displayReadonlyType and displayReadonlyValue.
ToggleChildrenWithCheckbox.xhtml
Incorrectly declared the componentType at the implementation level, it should not be declared at all in this case.
CommandButton.xhtml
Renamed the disabledWhenFormReadonly attribute to disabledWhenContainerReadonly.
You will have to rename this attribute in your own code!
For numerous composite components that relied on InputText.xhtml, the attribute readonly="false" was dropped since it
caused these components to never be readonly.
The Info.xhtml component now hides the info image when the info text is empty.
The MonthYear.xhtml component now has a tabindex="-1" on both select one menu's.
This allows you to logically tab through MonthYear fields.
The only down side is that you can't tab through the month and year fields in the absence of an input item.
The Date.xhtml component is now backed by a Date.java backing component.
This to support the new showOn attribute that was introduced to correct a tab error.
When using a button to show the calendar, the tab order is incorrect and confusing to users.
Showing the calendar on "focus", solves this problem.