RT ,谢谢各位了!
我用
这样的话不行,报服务器端的错误,
调用service层和dao层的我会使用了,只想看一下一般在项目中如果调用action中的方法的话,应该如何写?
[b]问题补充:[/b]
这个是我刚写的一个Class (已经脱离action)
public class UserLogin {
private String randomCode;
private String tag;
@Autowired
@Qualifier("userService")
private IUserService userService;
public String checkLogin(User myUser){
if (randomCode.equals(getSession().getAttribute("randomCode").toString())){
if(userService.checkLogin(myUser)){
tag = "success";
}
else{
tag = "failed";
}
}
else{
tag = "noRandNo";
}
return tag;
}
private HttpSession getSession() {
return ServletActionContext.getRequest().getSession();
}
}
然后我去配置dwr.xml
<?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">
<create creator="new" javascript="userManager">
<param name="class" value="com.squall.oa.dwr.UserLogin"/>
<include method="checkLogin"/>
</create>
下面是JSP页面的代码:
function validateUser(){
var username,password,result;
var myUser = {};
username = $("uname").value;
password = $("upass").value;
myUser.u_name = username;
myUser.u_pass = password;
userManager.checkLogin(myUser,callBackLogin)
if ("success" == result){
alert('用户名密码正确!');
return true;
}else if ("failed" == result){
alert('用户名密码错误!');
return false;
}else {
alert('验证码错误!');
return false;
}
}
function callBackLogin(data){
alert(data);
result = data;
}
我其实就是为了多传到dwr中 验证码 字符串,
但是这样写
就报告了如下的错误:
[b]a server error has Occured . More information may be available in the console[/b]
但是Console里 什么服务端的异常都没有~
[b]问题补充:[/b]
哦您说的对!~~
那您看这个问题该如何解决为最佳呢?
我应该如何去设计这个验证码的字段? 把它传进service方法里么?
[b]问题补充:[/b]
好的,
我刚才测试了一下
/**
- @日期: Aug 21, 2009 *
- @作者: 翟立虎 */
package com.squall.oa.dwr;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.squall.oa.model.User;
import com.squall.oa.service.IUserService;
public class UserLogin {
private String randomCode;
private String tag;
// @Autowired
// @Qualifier("userService")
// private IUserService userService;
public String checkLogin(User myUser){
if (randomCode.equals(getSession().getAttribute("randomCode").toString())){
if(1==1){
tag = "success";
}
else{
tag = "failed";
}
}
else{
tag = "noRandNo";
}
return tag;
}
private HttpSession getSession() {
return ServletActionContext.getRequest().getSession();
}
}
我写了个测试类,如果不使用Session 那么就不会报告那个错误,
如果使用了, 还会出现那个错误
哎,我真是头疼,那我通过什么方法,得到Session,拿到验证码,
而且还不会报错呢? 非常感谢您!! 就差这点儿问题了!~~
[b]问题补充:[/b]
这样做的话,那么前台的JS怎么写传值呢?
我对回调也不是理解很深,谢谢了~~
userManager.checkLogin(myUser,<%=session%>,callBackLogin);
我这样写好像不行~
[b]问题补充:[/b]
我测试过了,还是不行,报刚才的错误~~
哎,谢谢您了,不行的话 我就绕过这个验证码吧,传到service层里判断算了!~
[b]问题补充:[/b]
谢谢楼上两位详解了!