Custom Component - ajax4jsf problems?
alanrr_sr Dec 13, 2007 5:43 AMHi
I am developing (refactoring ;) ) a component based in tomahawk sandbox imageLoop. While developing, I was having problem with page loading two times (so losing some parameters).
encodeEnd in component (It is just for output):
writer.startElement(HTML.DIV_ELEM, uiComponent);
writer.writeAttribute(HTML.ID_ATTR, clientId, null);
writer.writeAttribute(HTML.STYLE_ATTR,
"position:relative;" +
"width:" + width + "px;" +
"height:" + height + "px", null);
//IMAGE CREATION 1
writer.startElement(HTML.IMG_ELEM, uiComponent);
writer.writeAttribute(HTML.ID_ATTR, clientIdImage1, null);
writer.writeAttribute(HTML.SRC_ATTR, "", null);
writer.writeAttribute(HTML.STYLE_ATTR,imageLoop.getImageStyle(),null);
writer.endElement(HTML.IMG_ELEM);
//IMAGE CREATION 2
writer.startElement(HTML.IMG_ELEM, uiComponent);
writer.writeAttribute(HTML.ID_ATTR, clientIdImage2, null);
writer.writeAttribute(HTML.SRC_ATTR, "", null);
writer.writeAttribute(HTML.STYLE_ATTR,imageLoop.getImageStyle(),null);
writer.endElement(HTML.IMG_ELEM);
//Javascript
writer.startElement(HTML.SCRIPT_ELEM, uiComponent);
writer.writeAttribute(HTML.SCRIPT_LANGUAGE_ATTR, HTML.SCRIPT_LANGUAGE_JAVASCRIPT, null);
writer.writeAttribute(HTML.SCRIPT_TYPE_ATTR, HTML.SCRIPT_TYPE_TEXT_JAVASCRIPT, null);
String jsImageArray = getJavascriptImageArray(facesContext, uiComponent);
writer.writeText("new ImageLoop('" + clientId + "', " +
jsImageArray + ", " + delay + ", " + minDelay + ", "
+ maxDelay + ", "+ transitionTime + ")", null);
writer.endElement(HTML.SCRIPT_ELEM);
writer.endElement(HTML.DIV_ELEM);
When I submit the form using this component, it looks that the page is rendered twice.
If I remove the creation of the two IMAGE Tags ( writer.startElement(HTML.IMG_ELEM, uiComponent);, everything works.
"Double page rendered" happens only when I use ajax4jsf (in this case a4j:region).
I was able to fix the component moving the img creation to javascript, but my question is if that is a expected behavior of ajax4jsf, and if so, there is any "guideline" to write compatible components?
PS: I am using version 3.1.2 GA and a NEWBIE