こんにちは、dwr を使用して Java サーブレットで ajax 呼び出しを処理しています。
これが私の dwr.xml です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="TempCardServlet">
<param name="class" value="com.slingmeadia.notifier.servlet.TempCardServlet"/>
</create>
</allow>
</dwr>
これが私のサーブレットファイルであり、その中で私は
package com.slingmeadia.notifier.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class TempCardServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String funtionType="";
if(request.getParameter("functiontype")!=null){
funtionType = (String)request.getParameter("functiontype");
}
if(funtionType.equals("logout")){
processLogout(request, response);
}else{
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processLogout(request, response);
}
public Map sampleFill(int empid,String functiontype){
System.out.println("functiontype : "+functiontype);
Map employeeData = new LinkedHashMap();
if(functiontype.equals("add")){
employeeData.put("name", "Antony");
}else{
employeeData.put("name", "Antony");
employeeData.put("cardnumber", "87896857852");
employeeData.put("issuedate", "17/01/2012");
}
return employeeData;
}
}
そして、これは私がjspファイルからメソッドを呼び出す方法です:
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
<script src='dwr/interface/TempCardServlet.js'></script>
<script>
function getValues(id) {
var empid = id.value;
var optionValue = document.getElementById("selectedOption").value;
TempCardServlet.sampleFill(empid,optionValue,{callback:setValues,async:false});
}
function setValues(tempcardMap) {
if(tempcardMap !=null){
document.getElementById("empname").value=tempcardMap.name;
document.getElementById("tempcardnumber").value=tempcardMap.cardnumber;
document.getElementById("dateofissue").value=tempcardMap.issuedate;
}
}
</script>
そして、これは私がjavascriptメソッドを呼び出す方法です:
<td width="55%"><input class="inputBoxes" type="text" name="empid" id="empid" onblur="getValues(this)" /></td>
すべてが適切に配置されており、問題はないようですが、機能しておらず、例外もありません。
これも好きにしてみた
入力したURLにhttp://localhost:8080/acct/dwr/index.html
DWRに認識されているクラスのリストが表示されます。クラスファイルもそこにあり、ブラウザからクラスファイルを開こうとしてサンプル入力を行いましたが、エラーも出力もありません。
これを解決するのを手伝ってください。
よろしく。