我用的是struts2  action中有参数message(action中有对应的get方法) 成功登陆后页面中我用${message}来显示登陆成功的信息  可是发现都接收不到 希望高手能够帮忙解决下!
这是我的action
package action;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import manager.UserManager;
import model.User;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{ private String username;
private String password;
private UserManager userManager;
private String message;
private User user; public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String getMessage() {
return message;
}
public User getUser() {
return user;
}
public String login()
{
User user = userManager.login(username, password);
if (user==null) {
message="用户名或密码错误";
return INPUT;
}
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("user", user);
this.user= user;
return SUCCESS;
}
}
这是我的struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.objectFactory" value="spring" />
<package name="user" namespace="/user" extends="struts-default">

<action name="login" class="userAction" method="login">
<result name="success" > /user/success.jsp</result>
<result name="input" >/login.jsp</result>
</action>
</package>

</struts>

解决方案 »

  1.   

    <property value="message" />
      

  2.   

    HttpSession session = ServletActionContext.getRequest().getSession();
    session.setAttribute("user", user);
    this.user= user;
    return SUCCESS;你成功登录,没给message赋值吧
      

  3.   

    正如前面所说的,如果成功登陆的话没给message赋值,要是登陆失败的话,在jsp中使用
    <property value="message" />来显示出错信息即可
      

  4.   

    肯定是后台没有用get,set方法吧,OGNL必须要get。set,才有效
      

  5.   

    你在action只是有message的成员变量,并没有把它放入request作用域,EL表达式取值的范围依次是page->request->session->application,那么${message}肯定获取不到!
    你必须使用OGNL表达式才可以获取到message,或者是struts2的标签。
      

  6.   

    在Action中的属性会自动放在request作用域中的嘛,你直接用属性名称就可以取值的,不需要用$,我记得$在Jsp页面中使用,是不识别的,你可以试看看,或者使用struts标签<s:property value="message"/>
      

  7.   


    public String login()
    {
    User user = userManager.login(username, password);
    if (user==null) {
    message="用户名或密码错误";
    return INPUT;
    }
    HttpSession session = ServletActionContext.getRequest().getSession();
    session.setAttribute("user", user);
    this.user= user;
    return SUCCESS;
    }你这里面登录成功后都没给message赋值啊,只有在登录失败(user==null)的时候才赋值
      

  8.   

    ……这个不是OGNL   这是EL表达式  还有  只要有get方法就可以了  我没从jsp页面获取message的值 所以不要set方法
      

  9.   

    哥们你解决了我的问题  不过为什么 我用${user.position}  却可以取到值呢? 很迷茫 
      

  10.   

    登录成功没有给message赋值,并且取值的时候${message}只能取request作用域里面的值,不能取session中的值
      

  11.   

    public String login()
    {
    User user = userManager.login(username, password);
    if (user==null) {
    message="用户名或密码错误";   //登陆出错时给message赋值
    return INPUT;
    }else{
    message = "成功登陆";     //登陆成功时给message赋值,赋值以后在JSP里才能有值
    }
    HttpSession session = ServletActionContext.getRequest().getSession();
    session.setAttribute("user", user);
    this.user= user;
    return SUCCESS;
    }
    }