Details
-
Type: Bug
-
Status: Closed
-
Priority: Minor
-
Resolution: Fixed
-
Affects Version/s: 1.6, 1.6.1
-
Component/s: ICE-Components
-
Labels:None
-
Environment:OS: Windows; Browser: All;
-
ICEsoft Forum Reference:
-
Workaround Exists:Yes
-
Workaround Description:
Description
Hi. I found a most intriguing issue. The <ice:selectInputDate> seems to ignore the disabled attribute. I've taken a look in the generated html code and the generated <input> indeed has no disabled attribute. The fix is easy I think. I took a look in icefaces' source code and found out that the disabled attribute is not taken into consideration: com.icesoft.faces.component.selectinputdate.SelectInputDateRenderer, method public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException; The simplest thing in my opinion would be to do the following:
<code>
Element dateText = domContext.createElement(HTML.INPUT_ELEM);
dateText.setAttribute(HTML.VALUE_ATTR, selectInputDate.formatDate((Date)selectInputDate.getValue()));
dateText.setAttribute(HTML.ID_ATTR, clientId + CALENDAR_INPUTTEXT);
dateText.setAttribute(HTML.NAME_ATTR, clientId + CALENDAR_INPUTTEXT);
dateText.setAttribute(HTML.CLASS_ATTR, selectInputDate.getCalendarInputClass());
dateText.setAttribute(HTML.ONFOCUS_ATTR, "setFocus('');");
dateText.setAttribute("onkeypress", this.ICESUBMIT);
dateText.setAttribute(HTML.ONBLUR_ATTR, this.ICESUBMITPARTIAL);
//my code
if (selectInputDate.isDisabled()) {
dateText.setAttribute(HTML.DISABLED_ATTR, "true");
}
if (selectInputDate.getAutocomplete() != null) {
dateText.setAttribute("autocomplete", selectInputDate.getAutocomplete());
}
// extract the popupdate format and use it as a tooltip
String tooltip = selectInputDate.getPopupDateFormat();
dateText.setAttribute(HTML.TITLE_ATTR, "Date Format: " + tooltip);
root.appendChild(dateText);
Element calendarButton = domContext.createElement(HTML.INPUT_ELEM);
calendarButton.setAttribute(HTML.ID_ATTR, clientId + CALENDAR_BUTTON);
calendarButton.setAttribute(HTML.NAME_ATTR, clientId + CALENDAR_BUTTON);
calendarButton.setAttribute(HTML.TYPE_ATTR, "image");
//my code
if (selectInputDate.isDisabled()) {
calendarButton.setAttribute(HTML.DISABLED_ATTR, "true");
}
</code>
<code>
Element dateText = domContext.createElement(HTML.INPUT_ELEM);
dateText.setAttribute(HTML.VALUE_ATTR, selectInputDate.formatDate((Date)selectInputDate.getValue()));
dateText.setAttribute(HTML.ID_ATTR, clientId + CALENDAR_INPUTTEXT);
dateText.setAttribute(HTML.NAME_ATTR, clientId + CALENDAR_INPUTTEXT);
dateText.setAttribute(HTML.CLASS_ATTR, selectInputDate.getCalendarInputClass());
dateText.setAttribute(HTML.ONFOCUS_ATTR, "setFocus('');");
dateText.setAttribute("onkeypress", this.ICESUBMIT);
dateText.setAttribute(HTML.ONBLUR_ATTR, this.ICESUBMITPARTIAL);
//my code
if (selectInputDate.isDisabled()) {
dateText.setAttribute(HTML.DISABLED_ATTR, "true");
}
if (selectInputDate.getAutocomplete() != null) {
dateText.setAttribute("autocomplete", selectInputDate.getAutocomplete());
}
// extract the popupdate format and use it as a tooltip
String tooltip = selectInputDate.getPopupDateFormat();
dateText.setAttribute(HTML.TITLE_ATTR, "Date Format: " + tooltip);
root.appendChild(dateText);
Element calendarButton = domContext.createElement(HTML.INPUT_ELEM);
calendarButton.setAttribute(HTML.ID_ATTR, clientId + CALENDAR_BUTTON);
calendarButton.setAttribute(HTML.NAME_ATTR, clientId + CALENDAR_BUTTON);
calendarButton.setAttribute(HTML.TYPE_ATTR, "image");
//my code
if (selectInputDate.isDisabled()) {
calendarButton.setAttribute(HTML.DISABLED_ATTR, "true");
}
</code>
This is still reoccurring in 1.6.1, neither the disabled nor the readonly attributes have any effect on the selectInputDate