3

私は DWR のスターターです。(http://directwebremoting.org/dwr-demo/simple/text.html) のチュートリアルに従って、dwr スクリプトを html ファイルに配置しました。しかし、アプリケーションを実行すると、次のメッセージが表示されます。

ReferenceError: dwr is not defined
[Break On This Error]       
var name = dwr.util.getValue("demoName");

私のHTMLファイルは次のとおりです。

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type='text/javascript' src='/dwr/engine.js'>    
</script>
<script type='text/javascript' src='/dwr/util.js'>

</script>
<title>Hello</title>
<script type="text/javascript">
    function update() {
        var name = dwr.util.getValue("demoName");
        Demo.sayHello(name, function(data) {
            dwr.util.setValue("demoReply", data);
        });
    }
</script>
</head>

<body>
    <p>
        Name: <input type="text" id="demoName" /> <input value="Send"
            type="button" onclick="update()" /> <br /> Reply: <span
            id="demoReply"></span>
    </p>
</body>
</html>

私の 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="Demo">
            <param name="class" value="com.dwr.my.Demo" />
        </create>
    </allow>
</dwr>

クラスファイルは Demo.java

package com.dwr.my;

public class Demo {

    public String sayHello(String name) {
        return "Hello, " + name;
    }

}
4

3 に答える 3

1

web.xmlに対応するJavaクラスとdwrサーブレットマッピングであるdwr.xmlを実装した後、localhost:8080 / DWR_tomcat /dwr/を実行します。次に、DWRに認識されているクラスが表示されます。次に、クラス名をクリックすると、クラスで宣言されたメソッドが表示され、htmlファイルに追加するJavaスクリプトタグが生成されます。

于 2012-10-18T05:13:21.343 に答える
1

このエラーは、変数dwrが JavaScript コンテキストに存在しないことを示しています。

DWR が正しく設定されていないようです。これは、前の回答に対するコメントによって確認されます: Shows message "NetworkError: 404 Not Found - localhost:8080/dwr/engine.js"。engine.js が見つからない場合、先に進むことはできません!

DWR を呼び出すことができるように、ここに記載されているすべての手順に従って環境を設定しましたか?: http://directwebremoting.org/dwr/introduction/getting-started.html

于 2012-10-17T16:29:33.700 に答える
1

web.xml に dwr サーブレット マッピングを必ず追加してください。

<servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <display-name>DWR Servlet</display-name>
        <description>Direct Web Remoter Servlet</description>
        <servlet-class>
            org.directwebremoting.servlet.DwrServlet
        </servlet-class>

</servlet>
<servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>

これをhtmlファイルに追加します

<script type='text/javascript' src='/dwr/demo.js'>    
</script>
于 2012-10-17T11:34:12.607 に答える