DWR 对象的传递不会写,请大家帮忙看看要怎么改,谢谢了!前台的方法:
function add(){
//获取页面表单的值
var username=document.getElementById("username").value;
var password=document.getElementById("password").value;
var sex=document.getElementById("sex").value;
var tea=document.getElementById("tea").value; //下面的Map用法有错,不懂怎么写,各位帮我看一下
//把上面获取的值放到Map中
var userMap=new Map();
userMap.put("username",username);
userMap.put("password",password);
userMap.put("sex",sex);
userMap.put("tea",tea);
//执行dwr的方法把Map传入后台
submit.saveUser(userMap,function callback(data){
alert(data);
});
}后台java方法直接使用User的实体来接收:
public boolean saveUser(User user){
……
}那么,在配置文件里应该怎么配置呢? 我在网上看了很多都不行,郁闷死了a !
function add(){
//获取页面表单的值
var username=document.getElementById("username").value;
var password=document.getElementById("password").value;
var sex=document.getElementById("sex").value;
var tea=document.getElementById("tea").value; //下面的Map用法有错,不懂怎么写,各位帮我看一下
//把上面获取的值放到Map中
var userMap=new Map();
userMap.put("username",username);
userMap.put("password",password);
userMap.put("sex",sex);
userMap.put("tea",tea);
//执行dwr的方法把Map传入后台
submit.saveUser(userMap,function callback(data){
alert(data);
});
}后台java方法直接使用User的实体来接收:
public boolean saveUser(User user){
……
}那么,在配置文件里应该怎么配置呢? 我在网上看了很多都不行,郁闷死了a !
解决方案 »
- jbpm4.4,如何使用AssignmentHandler接口
- JAVA 解析XML 问题 。
- hiernate org.hibernate.LazyInitializationException: could not initialize proxy
- hibernate问题1
- 关于poi的若干问题
- 新手求教struts问题
- 我的ANT为什么找不到外JAR包在的类?
- 能使用java开发c/s架构的系统吗?
- 大虾们:在家测试rmi,最后关头使用rmic编译远程对象类,生成一个存根类,总是..
- ejb 怎么用dataSource连接oracle 数据库呀?(只说个大概就行,给n分)
- 权限管理应该怎么写呢
- Tomcat与内存配置的问题
var user = {};
把获取页面表单的值设置为user的属性
user.username=username;
user.password=password;
...
把该user对象传递给方法submit.saveUser(....);记得要在dwr.xml文件中配置bean转化器转换java的User类
js构造对象的属性名字要和javabean的属性名字一样
具体该怎么写啊?
1.index.jsp<%@ page language="java" import="java.util.*" pageEncoding="gbk"
isELIgnored="false"%>
<%
String path = request.getContextPath();
%>
<html>
<head>
<script type='text/javascript' src='<%=path%>/dwr/interface/user.js'>
</script>
<script type='text/javascript' src='<%=path%>/dwr/engine.js'>
</script>
<script type='text/javascript' src='<%=path%>/dwr/util.js'>
</script>
<script type="text/javascript">
function checkLogin() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var u = {
username : username,
password : password
};
if (username.match(/^\s*$/)) {
alert("请输入用户名!");
} else if (password.match(/^\s*$/)) {
alert("请输入密码!");
} else {
user.checkLogin(u, function(data) {
if (data == true) {
alert("用户名密码验证成功!");
} else {
alert("验证失败,请重试!");
}
})
}
}
</script>
</head>
<body>
<form>
用户名:
<input type="text" name="username" id="username" />
<br />
密 码:
<input type="password" name="password" id="password" />
<br />
<input type="button" value="验证" onclick="checkLogin()" />
</form>
</body>
</html>
2.User.javapackage bean;public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean checkLogin(User user){
return user.password.equals("123")&&user.username.equals("123")?true:false;
}
}
3.dwr配置文件dwr.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<!-- without allow, DWR isn't allowed to do anything -->
<allow>
<create creator="new" javascript="user" >
<param name="class" value="bean.User" />
<include method="checkLogin"/>
</create>
<convert converter="bean" match="bean.User" >
<param name="include" value="username,password" />
</convert>
</allow>
</dwr>
4.web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
有问题可以给我留言
u['username']=username;
u['sex']=sex;
u['tea']=tea; 能帮我看一下吗? 这样建立Map是没问题的,但是传到后台就不行。这是为什么~
不知道~ 不安全的话 DWR能做什么?
function transObj(){
var user = {
userName:'abc',
pwd:'123',
male:true,
teacher:{teacherName:'tName'}
};
DwrPull.getUser(user,cb);
}
function cb(){
alert(1);
}
</script>
<input type="button" onclick="transObj()" value="obj">
============================
public class User {
private String userName;
private String pwd;
private Teacher teacher;
private boolean male;
public boolean isMale() {
return male;
}
public void setMale(boolean male) {
this.male = male;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}public class Teacher {
private String teacherName; public String getTeacherName() {
return teacherName;
} public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
}public class OrderNotice {
public void getUser(User user){
System.out.println(user);
System.out.println(user.getUserName());
System.out.println(user.isMale());
System.out.println(user.getPwd());
System.out.println(user.getTeacher());
System.out.println(user.getTeacher().getTeacherName());
}
}
========================
<create creator="new" javascript="DwrPull" scope="page">
<param name="class" value="com.dwr.pull.OrderNotice"/>
</create>
<convert match="com.dwr.pull.User" converter="bean"/>
<convert match="com.dwr.pull.Teacher" converter="bean"/>
=================
结果
com.dwr.pull.User@2e242b
abc
true
123
com.dwr.pull.Teacher@148bd9d
tName
1.index.jsp<%@ page language="java" import="java.util.*" pageEncoding="gbk"
isELIgnored="false"%>
<%
String path = request.getContextPath();
%>
<html>
<head>
<script type='text/javascript' src='<%=path%>/dwr/interface/user.js'>
</script>
<script type='text/javascript' src='<%=path%>/dwr/engine.js'>
</script>
<script type='text/javascript' src='<%=path%>/dwr/util.js'>
</script>
<script type="text/javascript">
function checkLogin() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
if (username.match(/^\s*$/)) {
alert("请输入用户名!");
} else if (password.match(/^\s*$/)) {
alert("请输入密码!");
} else {
var u = {
username : username,
password : password,
teacher : {tName:"jim",tAge:32},
sex:1
};
user.checkLogin(u, function(data) {
alert(data);
if(data!=null)
alert("username="+data.username+";password="+data.password+";sex="+data.sex+";tName="+data.teacher.tName+";tAge="+data.teacher.tAge);
})
}
}
</script>
</head>
<body>
<form>
用户名:
<input type="text" name="username" id="username" />
<br />
密 码:
<input type="password" name="password" id="password" />
<br />
<input type="button" value="验证" onclick="checkLogin()" />
</form>
</body>
</html>
2.User.javapackage bean;public class User {
private String username;
private String password;
private Teacher teacher;
private int sex;//1表示男,2表示女
public User(){
}
public User(String username){
this.username=username;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User checkLogin(User user){
return user.password.equals("123")&&user.username.equals("123")?user:null;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
public Teacher getTeacher() {
return teacher;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getSex() {
return sex;
}
}3.Teacher.java
package bean;public class Teacher {
private String tName;
private int tAge;
public Teacher(){
}
public String gettName() {
return tName;
}
public void settName(String tName) {
this.tName = tName;
}
public int gettAge() {
return tAge;
}
public void settAge(int tAge) {
this.tAge = tAge;
}
}4.dwr配置文件dwr.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<!-- without allow, DWR isn't allowed to do anything -->
<allow>
<create creator="new" javascript="user" >
<param name="class" value="bean.User" />
<include method="checkLogin"/>
</create>
<convert converter="bean" match="bean.User">
<param name="include" value="username,password,teacher,sex" />
</convert>
<convert converter="bean" match="bean.Teacher">
<param name="include" value="tName,tAge" />
</convert></allow>
</dwr>
4.web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
hi,你好,我试了一下你的传值方法还是不行,不知道为什么
var u = {
username : username,
password : password,
teacher : {tName:"jim",tAge:32},
sex:1
};
user.checkLogin(u, function(data)..... {
只要我传的是对象,就无法到达后台的方法,前台就报ERROR了,但后台没报错。后来的解决方法是:
var u=new function(){};
u.name='name';
u.password='123';
user.checkLogin(u,function(data)......
不过现在还没完全搞清楚这两者之间的区别
希望大家帮忙解释解释看