@Override
public String execute() throws Exception {
User u=new User();
System.out.println(info.getUsername());
u.setUsername(info.getUsername());
u.setPassword(info.getPassword());
if(userManager.exists(u)){
return "fail";
}
userManager.add(u);
prin(null);
return "success";
}
这里不override,就找不到了,所以response也用不上。
public String uname; 完了生成get set页面中标签name属性定义成uname 就直接传了
private String csdn;//setter getterpublic String execute() throws Exception{
csdn = "www.csdn.net";
return SUCCESS;
}前台: ${csdn}
Action里面
private UserInfo userInfo
//get、set方法
这样
页面<s:property value="userInfo里面的属性值"/>
这样就封装在form里面了,添加(页面 name=“userInfo.属性”)和取值 都是这样 很方便~
http://struts2.group.iteye.com/group/wiki/1356-how-to-use-ognl-in-struts2
HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
System.out.println("我要登录");
UserForm userForm=(UserForm)form;
Usertb user=new Usertb();
user.setUserName(userForm.getUserName());
user.setPassword(userForm.getPassword());
try {
if(userservice.validUser(user)){
out.print("{success:true}");
}else{
out.print("{success:false,data:'登录失败,用户名或密码不正确'}");
}
} catch (Exception e) {
out.print("{success:false,data:'系统异常,登录失败'}");
}
return null;
}以前的action是这种,现在我用了struts2.6和spring整合了,想返回{success:true}或者{success:false,data:'登录失败,用户名或密码不正确'},但在现的action里不能用session,用了你们上面所说的方法,还是不行,请求的页面是用ext做的登陆框,后台其它的都能正常运行,就是返回那一瞬间,好象收不到{success:true},最关键的是不跳转js代码如下:
login : function() {
if (this.fp.form.isValid()) {
this.fp.form.submit({
waitTitle : '请稍候',
waitMsg : '正在登录......',
url : 'u',
success : function(form, action) {
window.location.href = 'registerSuccess.jsp';
},
failure : function(form, action) {
form.reset();
Ext.Msg.alert('警告', action.result.data);
}
});
}
},
success : function(form, action) {
window.location.href = 'registerSuccess.jsp';
},
ext读这个 success的,就是读不到。
action:
@Component("u")
@Scope("prototype")
public class UserAction extends ActionSupport implements ModelDriven<UserRegisterInfo>,StrutsStatics{
private UserRegisterInfo info = new UserRegisterInfo(); private UserManager userManager;
private List<User> users;
private User user;
private String retojsp;
private javax.servlet.http.HttpServletResponse response;
public void setResponse(HttpServletResponse response) {
this.response = response;
} public UserManager getUserManager() {
return userManager;
}@Resource(name="userManager")
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}@Override
public String execute() throws Exception {
User u=new User();
System.out.println(info.getUsername());
u.setUsername(info.getUsername());
u.setPassword(info.getPassword());
if(userManager.exists(u)){
response.getWriter().print("{success:true}");//执行到这里就不走了
System.out.println("ok?");
return "success";
}
response.getWriter().print("{success:false,data:'登录失败,用户名或密码不正确'}");
System.out.println("用户不存在?");
return "fail";
}..............
action不@override,action就不执行了。response拿出来了用不了,根据打印语句显示 一般到response.getWriter().print("{success:true}");这句就不执行了,后台也不报错。我的是ext+ssh只加了一些json的包与commons包,不知道还要加其它什么或者还要配什么...........大神们,你们显神通吧。
用ext做的表单:
login : function() {
if (this.fp.form.isValid()) {
this.fp.form.submit({
waitTitle : '请稍候',
waitMsg : '正在登录......',
url : 'u',
success : function(form, action) {
window.location.href = 'registerSuccess.jsp';
},
failure : function(form, action) {
form.reset();
Ext.Msg.alert('警告', 'action.result.data');
}
});
}
}当后台执行完了。这个
success : function(form, action) {
window.location.href = 'registerSuccess.jsp';
}
执行不了。