写一个输入信息框,填写编号时,检查编号是不是存在,用DWR测试时候弹出了对应的类名而没有进入类里面的方法(方法里面有断点)。请哪位指点一下,错误在什么地方,不胜感谢!!
dao类:
public int checkNo(String productId) {
int count = 0;
// String productId = form.getProductId();
String sql = "select a.* from product a where a.product_id=?";
System.out.println("sql:====" + sql);
List list = new ArrayList();
Connection con = ConnectionDB.getDataSource();
try {
PreparedStatement pst = con.prepareStatement(sql);
pst.setString(1, productId);
ResultSet set = pst.executeQuery();
while (set.next()) {
list.add(set.getString(1));
list.add(set.getString(2));
list.add(set.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (list.size() > 0) {
count = 1;
} else {
count = 0;
}
return count;
}
JSP页面:在这个页面输入产品编号以后,失去焦点就检查是不是存在编号,调用JS里面方法,但就是不行:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%
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>
<base href="<%=basePath%>">
<title>录入产品信息</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="css/table.css">
<link rel="stylesheet" type="text/css" href="css/form.css">
<link rel="stylesheet" type="text/css" href="css/vbulletin.css">
<script type='text/javascript' src='/ZStruts/dwr/interface/JCheckNo.js'></script>
<script type='text/javascript' src='/ZStruts/dwr/engine.js'></script>
<script type='text/javascript' src='/ZStruts/dwr/util.js'></script>
<script type="text/javascript">
function checkProductNo(flag){
var productNo = flag.value;
if(productNo==""){
alert("编号不能为空");
flag.focus();
return;
}else{
alert("======");
JCheckNo.checkNo(productNo,check);}
}
function check(flag){
alert(flag);
if(flag==1){
alert("编号已存在!");
document.forms[0].elements["productId"].focus();
}
}
</script>
</head>
<body>
<br/>
<br/>
<html:form action="saveProductList.do">
<table align="center">
<caption><font size="5">录入产品信息</font></caption>
<tr>
<td>产品编号</td>
<TD><html:text property="productId" onblur="checkProductNo(this)" ></html:text></TD>
</tr>
<tr>
<td>产品名称</td>
<TD><html:text property="productName"></html:text></TD>
</tr>
<tr>
<td>产品价格</td>
<TD><html:text property="productPrice"></html:text></TD>
</tr>
<tr >
<td colspan=2>
<html:submit value="保存"></html:submit>
</td>
</tr>
</table>
</html:form>
</body>
</html>
Struts配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans>
<form-bean name="saveProductForm" type="cn.com.jasonlee.form.ProductFrom"></form-bean>
<form-bean name="searchProductForm" type="cn.com.jasonlee.form.ProductFrom"></form-bean>
<form-bean name="testDwr" type="cn.com.jasonlee.form.ProductFrom"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards>
<forward name="saveProduct" path="/SaveProduct.jsp"></forward>
<forward name="searchProduct" path="/SearchProduct.jsp"></forward>
</global-forwards>
<action-mappings>
<action name="saveProductForm" path="/saveProductList" scope="request"
type="cn.com.jasonlee.action.SaveProductAction">
<forward name="save" path="/Save.jsp"></forward>
</action>
<action name="searchProductForm" path="/searchProduct" scope="request"
type="cn.com.jasonlee.action.SearchProductAction">
<forward name="search" path="/search.jsp"></forward>
</action>
<action name="testDwr" path="/testDwr" scope="request"
type="cn.com.jasonlee.test.TestDwr">
<forward name="save" path="/Save.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="struts.ApplicationResources" />
</struts-config>
DWR配置文件
<?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>
//在jsp 页面里面通过JUserInfoBiz来调用checkName方法
<create javascript="JCheckNo" creator="new">
// 你所调用的是哪一个类
<param name="class" value="cn.com.jasonlee.dao.ProductDao" />
// 这个类里面的方法的名称
<include method="checkNo" />
</create>
<create javascript="TestDWR" creator="new">
// 你所调用的是哪一个类
<param name="class" value="cn.com.jasonlee.test.TestDwr" />
// 这个类里面的方法的名称
<include method="hello" />
</create>
<convert converter="bean" match="java.lang.StackTraceElement" />
<convert converter="exception" match="java.lang.Exception"/>
</allow>
</dwr>
分享到:
相关推荐
dwr配置文件是一个XML文件,名称通常为dwr.xml。它的结构主要包括以下几个部分: * `dwr`:根元素,用于定义DWR的配置设置。 * `allow`:定义允许远程调用的Java对象和方法。 * `create`:定义如何创建Java对象的...
`include`列出允许访问的方法,`exclude`列出禁止访问的方法。如果两者都存在,DWR会优先考虑`include`列表。 ### 6. `<signatures>` 段落 `<signatures>`部分用于定义Java方法的签名,特别是当方法参数类型复杂时...
5. **配置dwr.xml**:在dwr.xml中配置服务类及其暴露给客户端的Java方法,包括构造器类型和JS类名。 6. **JSP使用**:在JSP页面中引入DWR的核心引擎engine.js、工具包util.js以及自动生成的DWRService.js。在...
- **dwr.xml配置**:定义允许客户端访问的服务器端方法,包括类名、方法名等。 3. **MyEclipse中创建DWR项目** - **创建新项目**:在MyEclipse中新建一个Web项目,然后导入DWR的jar包。 - **创建Java类**:编写...
通过获取类名并实例化相应的Java类,DWR可以将接收到的JSON或XML数据转换为相应的Java对象。 2. **私有方法调用**:某些情况下,可能需要调用服务器端类的私有方法。通过反射,DWR可以绕过访问控制,直接调用这些...
反射是Java的一个强大特性,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并调用其方法。在DWR中,反射被用来实现JavaScript和Java方法之间的映射。DWR通过反射动态地创建Java对象,然后将这些对象...
dwr.xml 文件是 DWR 的核心配置文件,用于定义哪些 Java 类可以被远程访问和如何将 Java 对象转换为 JavaScript 对象本文将详细讲解 dwr.xml 文件的配置和入门使用。 在 dwr.xml 文件中, `<allow>` 标签用于定义...
- **不支持方法重载**:DWR不支持JavaScript中的方法重载,因此在Java中设计API时应避免使用相同方法名但参数不同的情况。 ### 结语 DWR简化了服务器推送技术的实现,让开发者能够轻松创建实时交互的Web应用。通过...
`servlet`元素定义了一个名为`dwr-invoker`的Servlet,其具体实现类为`uk.ltd.getahead.dwr.DWRServlet`。`DWRServlet`是DWR的核心组件,负责处理所有与DWR相关的请求。`init-param`元素则定义了初始化参数`debug`,...
DWR(Direct Web Remoting)是一种开源的Java库,它允许JavaScript在浏览器中直接调用服务器端的Java方法,实现Web应用中的实时双向通信。DWR简化了Ajax开发,使得开发者可以像操作本地对象一样操作远程对象,从而...
通过 DWR,开发人员可以轻松地在浏览器端调用服务器端的 Java 方法,而无需了解复杂的 AJAX 编程技巧。 #### 二、DWR 的核心功能 1. **直接调用 Java 方法**:DWR 支持直接从 JavaScript 调用服务器端的 Java 方法...
例如,没有使用`@RemoteMethod`的方法在客户端是不可见的。在dwr.xml文件中,这些注解对应的配置如下: ```xml <dwr> </dwr> ``` **Spring集成** 如果你的应用使用Spring框架,DWR可以与Spring无缝集成...
1. **允许访问的类和方法**:通过`<allow>`标签指定,可以设置类、包或全局允许的类名。 2. **安全控制**:`<convert>`标签用于指定数据类型的转换,例如将Java对象转化为JSON格式。 3. **CSP(Content Security ...
- **配置 dwr.xml**:在配置文件中声明远程接口,指定类名和允许访问的方法。 - **生成 JavaScript API**:DWR 会自动生成与 Java 类对应的 JavaScript 接口,供前端使用。 - **前端调用**:在 HTML 页面中,通过...
DWR(Direct Web Remoting)是一种简化JavaScript调用Java方法的技术,它允许Web应用程序的客户端直接访问服务器端的Java对象,从而实现Ajax功能而无需编写复杂的XML或JSON序列化代码。本文将通过一个实战案例,详细...
`creator`是用来创建服务器端对象的,例如Spring Bean,而`converter`则负责将Java对象转换为JavaScript能理解的格式。`id`属性是唯一的标识符,便于在其他部分引用。`init`部分不是必须的,只有当需要自定义创建或...
DWR 提供了一种简单的方法来将 Java 对象暴露给 JavaScript,允许 JavaScript 调用 Java 方法,以及让 Java 方法调用 JavaScript 函数。在实现消息推送方面,DWR 提供了强大的支持。 #### 实现原理 DWR 消息推送的...
5. **DWR 配置**:在 DWR 的配置文件(通常为 `dwr.xml`)中,声明刚刚创建的远程 Java 对象。通过 `<create>` 标签指定类名,以及要暴露给客户端的方法。 6. **前端使用**:在 HTML 或 JavaScript 文件中,引入 ...
总的来说,这个例子是一个结合了DWR、Ajax和Tomcat数据库连接池的简单应用,它演示了如何在不刷新整个页面的情况下,通过Ajax技术实现与后台数据库的交互,提升用户体验。理解并熟练运用这些技术,对于开发高效、...
2. **DWR Servlet**:声明一个名为`dwr-invoker`的Servlet,它会处理DWR的请求。在这里,你需要指定Servlet的类名`org.directwebremoting.servlet.DwrServlet`。 3. **DWR初始化参数**:设置DWR的一些配置参数,...