-
1. Re: Rich Calendar Issue in 3.3.2.
ilya_shaikovsky Nov 27, 2009 9:56 AM (in response to ramprasadhtv)Please show concrete code. Calendar component uses nested children component as day markup. But that should not touch converters and a4j:support.
-
2. Re: Rich Calendar Issue in 3.3.2.
ramprasadhtv Nov 30, 2009 5:01 AM (in response to ramprasadhtv)Hi Ilya
As part of the xhtml, we have a isRendered boolean method where the parametric form is constructed programatically.
When we also checked the styling aspect we observed that
-- When it comes OK (e.g. in Manage Calendar page), the day number comes directly as text value in TD tag of calendar table
-- When it is corrupted (empty cells), the TD tag contains only an empty DIV with style class "rich-calendar-cell-div"...
Enclosing the method related to calendar
protected UIComponent buildRangeControl(String attribute) {
JsfPanelGridNoStyle minMaxPanelGrid = (JsfPanelGridNoStyle) FacesContext.getCurrentInstance().getApplication().createComponent(JsfPanelGridNoStyle.COMPONENT_TYPE);
minMaxPanelGrid.setId("minMaxPanelGridId_" + attribute);
// minMaxPanelGrid.setColumnClasses("jsfPanelGridColRange1, jsfPanelGridCol2NoStyle");
minMaxPanelGrid.setColumnClasses("jsfPanelGridCol1NoStyle, jsfPanelGridCol2NoStyle");
Converter conv = getConverters().get(attribute);
JsfOutputLabel lbl = (JsfOutputLabel) FacesContext.getCurrentInstance().getApplication().createComponent(JsfOutputLabel.COMPONENT_TYPE);
lbl.setId("label_" + attribute);
if (getCaptions().get(attribute) != null) {
lbl.setValue(getCaptions().get(attribute));
}
JsfPanelGroup minPanelGroup = (JsfPanelGroup) FacesContext.getCurrentInstance().getApplication().createComponent(JsfPanelGroup.COMPONENT_TYPE);
JsfPanelGroup maxPanelGroup = (JsfPanelGroup) FacesContext.getCurrentInstance().getApplication().createComponent(JsfPanelGroup.COMPONENT_TYPE);
minPanelGroup.setId("minPanel_" + attribute);
maxPanelGroup.setId("maxPanel_" + attribute);
UIComponent min = null;
UIComponent max = null;
if (attribute.equals("dateInStock") || !(getConverters().get(attribute) instanceof DateConverter) || (getDateFormats().get(attribute) != null && getDateFormats().get(attribute).contains("d") && !getDateFormats().get(attribute).contains("MM") && !getDateFormats().get(attribute).contains("yyyy"))) {
min = (JsfInputText) FacesContext.getCurrentInstance().getApplication().createComponent(JsfInputText.COMPONENT_TYPE);
max = (JsfInputText) FacesContext.getCurrentInstance().getApplication().createComponent(JsfInputText.COMPONENT_TYPE);
min.setId("min_" + attribute);
max.setId("max_" + attribute);
((JsfInputText) min).setStyleClass("jsfInputTextRange");
((JsfInputText) max).setStyleClass("jsfInputTextRange");
ValueExpression expr = FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(FacesContext.getCurrentInstance().getELContext(), "#{commonParametricPageBean.parametricBean.selectedValuesMap." + attribute + "_MIN}", Object.class);
min.setValueExpression("value", expr);
expr = FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(FacesContext.getCurrentInstance().getELContext(), "#{commonParametricPageBean.parametricBean.selectedValuesMap." + attribute + "_MAX}", Object.class);
max.setValueExpression("value", expr);
if(isShowOnChange()){
min.getChildren().add(refreshSupport("onblur", "suportmin_" + attribute));
max.getChildren().add(refreshSupport("onblur", "suportmax_" + attribute));
}
((JsfInputText) min).setConverter(conv);
((JsfInputText) max).setConverter(conv);
} else {
min = (RichCalendar) FacesContext.getCurrentInstance().getApplication().createComponent(RichCalendar.COMPONENT_TYPE);
max = (RichCalendar) FacesContext.getCurrentInstance().getApplication().createComponent(RichCalendar.COMPONENT_TYPE);
RichCalendar minCalendar = (RichCalendar) min;
RichCalendar maxCalendar = (RichCalendar) max;
minCalendar.setId("min_" + attribute);
maxCalendar.setId("max_" + attribute);
// ((RichCalendar)min).setStyleClass("richCalendarInputRange");
// ((RichCalendar)max).setStyleClass("richCalendarInputRange");
minCalendar.setShowInput(true);
maxCalendar.setShowInput(true);
minCalendar.setDatePattern(getDateFormats().get(attribute));
maxCalendar.setDatePattern(getDateFormats().get(attribute));
minCalendar.setConverter(conv);
maxCalendar.setConverter(conv);
ValueExpression expr = FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(FacesContext.getCurrentInstance().getELContext(), "#{commonParametricPageBean.parametricBean.selectedValuesMap." + attribute + "_MIN}", Object.class);
minCalendar.setValueExpression("value", expr);
expr = FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(FacesContext.getCurrentInstance().getELContext(), "#{commonParametricPageBean.parametricBean.selectedValuesMap." + attribute + "_MAX}", Object.class);
maxCalendar.setValueExpression("value", expr);
if(isShowOnChange()){
min.getChildren().add(refreshSupport("onchanged", "suportmin_" + attribute));
max.getChildren().add(refreshSupport("onchanged", "suportmax_" + attribute));
}
}
UIParameter attributeParam = new UIParameter();
attributeParam.setId("param_attribute_min_" + attribute);
attributeParam.setName("attribute");
attributeParam.setValue(attribute);
UIParameter contextParam = new UIParameter();
contextParam.setId("param_context_min_" + attribute);
contextParam.setName("converterContext");
contextParam.setValue("form");
UIParameter formatParam = new UIParameter();
formatParam.setName("DATE_FORMAT");
if (getDateFormats().get(attribute) != null) {
formatParam.setValue( getDateFormats().get(attribute));
}
min.getChildren().add(attributeParam);
min.getChildren().add(contextParam);
min.getChildren().add(formatParam);
attributeParam = new UIParameter();
attributeParam.setId("param_attribute_max_" + attribute);
attributeParam.setName("attribute");
attributeParam.setValue(attribute);
contextParam = new UIParameter();
contextParam.setId("param_context_max_" + attribute);
contextParam.setName("converterContext");
contextParam.setValue("form");
max.getChildren().add(attributeParam);
max.getChildren().add(contextParam);
formatParam = new UIParameter();
formatParam.setName("DATE_FORMAT");
if (getDateFormats().get(attribute) != null) {
formatParam.setValue( getDateFormats().get(attribute));
}
max.getChildren().add(formatParam);
//min.setConverter(conv);
//max.setConverter(conv);
minPanelGroup.getChildren().add(min);
maxPanelGroup.getChildren().add(max);
if(isShowToolTip()){
RichToolTip minToolTip = getRangeToolTipMin(min.getId(), attribute);
minPanelGroup.getChildren().add(minToolTip);
RichToolTip maxToolTip = getRangeToolTipMax(max.getId(), attribute);
maxPanelGroup.getChildren().add(maxToolTip);
}
if (attribute.equals("dateInStock") || (getDateFormats().get(attribute) != null && getDateFormats().get(attribute).contains("d") && !getDateFormats().get(attribute).contains("MM") && !getDateFormats().get(attribute).contains("yyyy"))) {
minMaxPanelGrid.getChildren().add(maxPanelGroup);
minMaxPanelGrid.getChildren().add(minPanelGroup);
} else {
minMaxPanelGrid.getChildren().add(minPanelGroup);
minMaxPanelGrid.getChildren().add(maxPanelGroup);
}
panelGrid.getChildren().add(lbl);
panelGrid.getChildren().add(minMaxPanelGrid);
getUIComponentMap().put(attribute + "_MIN", min);
getUIComponentMap().put(attribute + "_MAX", max);
return panelGrid;
} -
3. Re: Rich Calendar Issue in 3.3.2.
ilya_shaikovsky Nov 30, 2009 9:47 AM (in response to ramprasadhtv)hmm.. it's looks weird but as I said
Calendar component uses nested children component as day markup.
and UIParam is a component - so calendar trying to build markup from nested components but actually there are no components which output any layout in your case.. add outputText with value {day} to the calendar children in order to output the cell day in your case. -
4. Re: Rich Calendar Issue in 3.3.2.
ramprasadhtv Dec 1, 2009 12:44 AM (in response to ramprasadhtv)Thank you very much Ilya. Works fine as per your suggestion. Appreciate your help.