The AJAX integration through DWR 3 is not the main feature in Parancoe, but it's easy and funny. Let's see how simple is building a Web chat.
Starting from a project generated with Maven using the Parancoe Web Archetype, you need to add the Parancoe DWR Plugin to the dependencies in your
pom.xml
:
<dependency>
<groupId>org.parancoe</groupId>
<artifactId>parancoe-plugin-dwr</artifactId>
<version>2.0.2</version>
</dependency>
Then add the
/dwr/*
pattern to the mapping of the parancoe servlet in your
web.xml
.
Now DWR is ready to be used in your application. You check it building and deploying your application, and pointing your browser to
<your_base_address>/dwr/index.html
. You should see the DWR Test Page.
Then add a class with methods (a single method in this example) that will be invoked through AJAX:
package com.mycompany.testapp.ajax;
import org.directwebremoting.Browser;
import org.directwebremoting.annotations.RemoteMethod;
import org.directwebremoting.annotations.RemoteProxy;
import org.directwebremoting.ui.dwr.Util;
import org.springframework.stereotype.Component;
@Component
@RemoteProxy(name = "chat")
public class Chat {
@RemoteMethod
public void send(final String nickname, final String message) {
Browser.withCurrentPage(new Runnable() {
public void run() {
Util.addRows("chatLog", new String[][]{{nickname, message}});
}
});
}
}
Simple, isn't it? ...but powerful. When invoked that method will add a row to the table with id
chatLog
, in all browsers that are visualizing that page.
Let's see the page
chat.jsp
in which that method is invoked:
<%@ include file="WEB-INF/jsp/common.jspf" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<%@ include file="WEB-INF/jsp/head.jspf" %>
<script src="${cp}/dwr/interface/chat.js" type="text/javascript"/>
<script src="${cp}/dwr/engine.js" type="text/javascript" />
<script src="${cp}/dwr/util.js" type="text/javascript" />
<title>Parancoe DWR chat</title>
</head>
<body>
<h1>DWR Chat</h1>
<table id="chatLog">
<thead>
<tr><th>Nickname</th><th>Message</th></tr>
</thead>
<tbody> </tbody>
</table>
<form id="chatForm" method="post" action="/sendMessage">
Nickname: <input id="nickname" type="text" /><br/>
Say: <input id="say" type="text" /><br/>
<input type="submit">
</form>
<script type="text/javascript">
function bindUI() {
$('chatForm').observe('submit', chatSubmit);
}
function chatSubmit(event) {
event.stop();
chat.send($F('nickname'), $F('say'));
}
dwr.engine.setActiveReverseAjax(true);
document.observe('dom:loaded', bindUI);
</script>
</body>
</html>
In your
parancoe-servlet.xml
file add the following configuration for enabling the active reverse AJAX in DWR:
Build and deploy your application. Open multiple windows of your browser(s) to
<your_base_address>/chat.jsp
, and start chatting:

Have fun with Parancoe!