Author: amarkhel
Date: 2010-01-06 13:11:51 -0500 (Wed, 06 Jan 2010)
New Revision: 16247
Modified:
branches/community/3.3.X/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxForm.java
Log:
RF-7603
Modified:
branches/community/3.3.X/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxForm.java
===================================================================
---
branches/community/3.3.X/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxForm.java 2010-01-06
18:09:40 UTC (rev 16246)
+++
branches/community/3.3.X/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxForm.java 2010-01-06
18:11:51 UTC (rev 16247)
@@ -33,6 +33,7 @@
import org.ajax4jsf.event.AjaxEvent;
import org.ajax4jsf.event.AjaxListener;
import org.ajax4jsf.event.AjaxSource;
+import org.ajax4jsf.renderkit.RendererUtils;
/**
@@ -45,6 +46,7 @@
public abstract class UIAjaxForm extends UIForm implements AjaxComponent, AjaxSource,
IterationStateHolder
{
public static final String COMPONENT_TYPE = "org.ajax4jsf.Form";
+ public static final String FOCUS_DATA_ID = "_A4J.AJAX.focus";
/* (non-Javadoc)
* @see
javax.faces.component.UIComponent#processDecodes(javax.faces.context.FacesContext)
@@ -122,10 +124,38 @@
public void broadcast(FacesEvent event) throws AbortProcessingException {
// perform default
super.broadcast(event);
- if (event instanceof AjaxEvent) {
+ /*if (event instanceof AjaxEvent) {
// complete re-Render fields. AjaxEvent deliver before render response.
setupReRender();
- }
+ }*/
+ if (event instanceof AjaxEvent)
+ {
+ FacesContext context = this.getFacesContext();
+ // complete re-Render fields. AjaxEvent deliver before render
+ // response.
+ this.setupReRender(context);
+ // Put data for send in response
+ Object data = this.getData();
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+ if (null != data)
+ {
+ ajaxContext.setResponseData(data);
+ }
+ String focus = this.getFocus();
+ if (null != focus)
+ {
+ // search for component in tree.
+ // XXX - use more pourful search, as in h:outputLabel
+ // component.
+ UIComponent focusComponent =
RendererUtils.getInstance().findComponentFor(this, focus);
+ if (null != focusComponent)
+ {
+ focus = focusComponent.getClientId(context);
+ }
+ ajaxContext.getResponseDataMap().put(FOCUS_DATA_ID, focus);
+ }
+ ajaxContext.setOncomplete(this.getOncomplete());
+ }
}
@@ -137,6 +167,10 @@
AjaxContext.getCurrentInstance(context).addRegionsFromComponent(this);
}
+ protected void setupReRender(final FacesContext facesContext){
+ AjaxContext.getCurrentInstance(facesContext).addRegionsFromComponent(this);
+ this.setupReRender();
+ }
Show replies by date