While looking the release documents of Cometd 2.1.0, I find that it supports jQuery bindings and Dojo bindings. So, I try to change the bindings to jQuery based on 1.4.12.
The files I have changed are two, CometdAbstractBehavior.java, CometdBehavior.java. And import javascripts from cometd-javascript-jquery-2.1.0.war.
public abstract class CometdAbstractBehavior extends AbstractDefaultAjaxBehavior { private static final long serialVersionUID = 1L; // FIXME: put this in application scope, we may have several webapp using // CometdBehavior in the same web container! private final static String cometdServletPath = getCometdServletPath(); private static final ResourceReference COMETD = new CompressedResourceReference(CometdAbstractBehavior.class, "org/cometd.js"); private static final ResourceReference JQ_JSON2 = new CompressedResourceReference(CometdAbstractBehavior.class, "jquery/json2.js"); private static final ResourceReference JQ_COMETD = new CompressedResourceReference(CometdAbstractBehavior.class, "jquery/jquery.cometd.js"); @Override public void renderHead(final IHeaderResponse response) { super.renderHead(response); if (channelId == null) { throw new IllegalArgumentException("ChannelId in a CometdBehavior can not be null"); } response.renderJavascriptReference(COMETD); response.renderJavascriptReference(JQ_JSON2); response.renderJavascriptReference(JQ_COMETD); response.renderJavascript(getInitCometdScript(), "initCometd"); final String cometdInterceptorScript = getCometdInterceptorScript(); if (cometdInterceptorScript != null) { response.renderJavascript(cometdInterceptorScript, "Interceptor" + getBehaviorMarkupId()); } response.renderJavascript(getSubscriberScript(), "Subscribe" + getBehaviorMarkupId()); } protected final CharSequence getInitCometdScript() { return getConfigureCometdScript() + getHandshakeCometdScript(); } protected final String getConfigureCometdScript() { return "$.cometd.configure('" + cometdServletPath + "')\n"; } protected String getHandshakeCometdScript() { return "$.cometd.handshake()\n"; } public final CharSequence getSubscriberScript() { return "$.cometd.subscribe('/" + getChannelId() + "', " + getPartialSubscriber() + ");\n"; }
public class CometdBehavior extends CometdAbstractBehavior { @Override public final String getCometdInterceptorScript() { final Mapmap = new HashMap (); map.put("behaviorMarkupId", getBehaviorMarkupId()); map.put("url", getCallbackUrl().toString()); return new PackagedTextTemplate(CometdBehavior.class, "CometdDefaultBehaviorTemplate.js").asString(map); } @Override public final CharSequence getPartialSubscriber() { return "onEventFor" + getBehaviorMarkupId(); }
Yes, it works. Thanks for chrome's developer tool. It helps me lot! And I also refer this.
No comments:
Post a Comment