天天看點

DWR項目中呼叫的類未定義

    在應用dwr架構時經常會出現被呼叫的自己定義的類未定義,如:Hello是自己定義的物件

    package com.dingxun.dwr;

public class Hello {

public String hello(String name) {

return "你好"+name+",歡迎你的加入";

}

}

    這個物件是用來在客戶呼叫的,如下面代碼:

    if (typeof window["DWRUtil"] == "undefined") {

window.DWRUtil = dwr.util;

}

function hello() {

var name=$('name').value;

Hello.hello(name, callback);

}

function callback(msg) {

DWRUtil.setValue("state", msg);

}

   在上面的代碼中,Hello.hello(name, callback)就是在用戶端呼叫的物件,它呼叫我們定自義的物件Hello中的hello方法。但是在某些情況下我們呼叫的時間會出現Hello未定義的錯誤,有以下幾種情況會出現這種錯誤:

      1:在dwr.xml中配置錯誤

       <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr//dwr30.dtd">

<dwr>

<allow>

<create creator="new" javascript="Hello">

<param name="class" value="com.dingxun.dwr.Hello" />

</create>

<convert match="demo.Person" converter="bean"></convert>

</allow>

</dwr>

解決辦法: 這種情況就是class配置錯誤,隻需把class配置正确就可以了。還要注的一點就是javascript對應的名字Hello才是我真正用的呼叫物件的名字,隻有通  過 javascript對應的Hello才能呼叫我們自定義的物件。

      2:在jsp頁面引用錯誤

        通常預設的引用如下:

        <script type='text/javascript' src="/dwr/interface/Hello.js"> </script>

<script type='text/javascript' src="/dwr/engine.js"></script>

<script type='text/javascript' src="/dwr/util.js"></script>  

        這種引用方法在某些情況下很容易出錯,用以下方法就可以解決引用錯誤這個問題。

        解決辦法如下:

        方法1:

        <script type="text/javascript"

src="<%=request.getContextPath()%>/dwr/interface/Hello.js'">

</script>

<script type="text/javascript"

src="<%=request.getContextPath()%>/dwr/engine.js">

</script>

<script type="text/javascript"

src="<%=request.getContextPath()%>/dwr/util.js">

</script> 

        方法2:

        <script type='text/javascript' src="/項目名/dwr/interface/Hello.js"> </script>

<script type='text/javascript' src="/項目名/dwr/engine.js"></script>

<script type='text/javascript' src="/項目名/dwr/util.js"></script>

        方法3:

        此方法待寫   

       如果仔細分析,以上幾種方法其實質都是一樣的,因為request.getContextPath()得到的就是:/項目名。

總結:

     通過上面的介紹,基本上就可以搞定呼叫物件未定義的問題,至于還沒有其它情況有待發現。

繼續閱讀