Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 1.6.2
-
Fix Version/s: 1.7.2
-
Component/s: ICE-Components
-
Labels:None
-
Environment:Windows, JBoss 4.2
-
Workaround Exists:Yes
-
Workaround Description:Make sure that no selectInputDate exists with a clientId which is a substring of another selectInputDate's clientId.
Description
com.icesoft.faces.component.selectinputdate.SelectInputDateRenderer#checkLink() checks whether the calendar button that was clicked is the same button that corresponds to the current SelectInputDate component. It does this by looking for the clientId of the SelectInputDate component as a substring of the linkId that was clicked. This approach produces a false positive if another selectInputDate component exists that has a client id which is a superstring of another selectInputDate component.
To reproduce, create two selectInputDates side by side. Give the first an id of "test", and the second an id of "test2". Click the calendar button of the "test2" component. The popup for both "test" and "test2" will appear.
This is because the client of "test" is a substring of the clicked link id, which is "test2_calendarButton". Therefore the test in com.icesoft.faces.component.selectinputdate.SelectInputDateRenderer#checkLink() returns true.
To reproduce, create two selectInputDates side by side. Give the first an id of "test", and the second an id of "test2". Click the calendar button of the "test2" component. The popup for both "test" and "test2" will appear.
This is because the client of "test" is a substring of the clicked link id, which is "test2_calendarButton". Therefore the test in com.icesoft.faces.component.selectinputdate.SelectInputDateRenderer#checkLink() returns true.
I could not reproduce the bug with one selectInputdate having the id "date" and the other having the id "date2". Inspection of the code shows that case to not be an issue, in the current codebase. There is a case where it will match if the id has a trailing underscore plus additional letters, like "date_" and "date_something" not working properly with "date". So, I've fixed that.
TRUNK
Subversion 17440
ICEfaces 1.7 branch
Subversion 17441
icefaces\component\src\com\icesoft\faces\component\selectinputdate\SelectInputDateRenderer.java