private String logoutURL = null;
private Focusable pendingFocus;
+
+ /**
+ * Flag to indicate if first ajax request is sent
+ */
+ private boolean ajaxInitSent = false;
+
+ /**
+ * This function should anly be called in AjaxApplicationManager to
+ * tell ajax engine (browser) that this is application restart. Returns
+ * true on first call, false on subsequent calls.
+ *
+ * TODO consider moving this to WebApplicationContext
+ *
+ * @return true if in ajax init state
+ */
+ public boolean ajaxInit() {
+ if(this.ajaxInitSent) {
+ return false;
+ } else {
+ return this.ajaxInitSent = true;
+ }
+ }
/**
* <p>
import com.itmill.toolkit.terminal.Paintable;
import com.itmill.toolkit.terminal.URIHandler;
import com.itmill.toolkit.terminal.Paintable.RepaintRequestEvent;
-import com.itmill.toolkit.ui.AbstractComponent;
import com.itmill.toolkit.ui.Component;
import com.itmill.toolkit.ui.FrameWindow;
import com.itmill.toolkit.ui.Window;
}
}
- // add meta instruction for client to set focus if it is set
- Paintable f = (Paintable) application.consumeFocus();
- if (f != null) {
- paintTarget.startTag("meta");
- paintTarget.startTag("focus");
- paintTarget.addAttribute("pid", getPaintableId(f));
- paintTarget.endTag("focus");
- paintTarget.endTag("meta");
- }
+ // add meta instruction for client to set focus if it is set
+ Paintable f = (Paintable) application.consumeFocus();
+ // .. or initializion (first uidl-request)
+ boolean init = application.ajaxInit();
+ if(init || f != null) {
+ paintTarget.startTag("meta");
+ if(init)
+ paintTarget.addAttribute("appInit", true);
+ if(f != null) {
+ paintTarget.startTag("focus");
+ paintTarget.addAttribute("pid", getPaintableId(f));
+ paintTarget.endTag("focus");
+ }
+ paintTarget.endTag("meta");
+ }
paintTarget.close();
out.flush();