警惕 JS 方法名 的规范性 -- 记 dwr 入门 - Hello world

本文探讨了Direct Web Remoting (DWR)框架中调用Java方法的问题。具体表现为在调试模式下能够正常调用Java方法,但在实际网页部署环境中无法调用。通过检查配置文件、JavaScript代码及HTML页面,定位到方法名与对象名重复导致的方法调用失败问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

郁闷了一下午的问题

调试模式 可以成功调用 java 方法, 但是在页面中却无法运行

--------------------------------------

package com.service;

public class HelloService {

public String sayHello(String str){
return "Hello World"+str;
}
}

================================

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="
http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>
<servlet-name>dwr-invoke</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoke</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

</web-app>

<?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 javascript="hs" creator="new" scope="application">
<param name="class" value="com.service.HelloService"></param>
<include method="sayHello"/>
</create>

</allow>

</dwr>

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<script type="text/javascript" src="<%=path%>/dwr/interface/hs.js"></script>

<script type="text/javascript" src="<%=path%>/dwr/util.js"></script>
<script type="text/javascript" src="<%=path%>/dwr/engine.js"></script>



<script type="text/javascript">


//由于 hs 方法名 与 hs 对象 重复 ,导致冲突而无法访问 sayHello 方法
function hs(){// 将hs 方法名 改一下 就OK


alert("");
hs.sayHello("cccccc",abc);
alert("xxxx");
}
function abc(data){
alert(data);
}
</script>
</head>

<body>
<input onclick="hs();" value="dddd" type="button">
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值