【问题标题】:sessionAware : How can I get session attribute from actionsessionAware:如何从操作中获取会话属性
【发布时间】:2016-03-19 19:47:33
【问题描述】:

我想从一些实现SessionAware接口的动作中访问一个会话属性;

我想根据登录用户的类型进行一些测试,它所关联的信息存储在会话的属性中,我可以在我的 JSP 页面中使用以下代码获取该属性:

<s:property value="%{#session['attribute']}"/> 

我的LoginAction

public class LoginAction extends ActionSupport implements SessionAware {

    private static final long serialVersionUID = 1L;
    private String userName;
    private String password;

    private Map<String, Object> session;
        private Service service;
        Utilisateur user; 
    // ---------------------------- Log Out register user


    public String logOut() {
        session.remove("loginId");
        session.clear();
        addActionMessage("You Have Been Successfully Logged Out");
        return SUCCESS;
    }

    // ---------------------------- Login register user

    public String loginRegisterUser() {

        service = new ServiceImpl();
         user = service.checkUsernamePassword(userName, password);

        if (user != null) 
        {
            session.put("loginId", userName);
            session.put("mdp", password);
            session.put("role", user.getRole().getRole());
            return "success";
        } 
        else
        {
                addActionError("Please Enter Valid emailId or Password");
            return LOGIN;
        }
    }

    public void setSession(Map<String, Object> map) {
        this.session = map;
    }

如何在我的操作类中获取它们?

编辑:

我尝试使用此代码从其他操作中获取它:

public class GestionMissions extends ActionSupport implements  SessionAware, ModelDriven
{
    private Map<String, Object> session;


    @Override
    public void setSession(Map<String, Object> s) {
        this.session = s;

    }

    public String getsession() 
    {
        String test;
        test = (String) session.get("loginId");

        System.out.println(test);
                return "success";

}

【问题讨论】:

    标签: java session struts2


    【解决方案1】:

    会话变量包含在您通过setSession 方法获得的映射中,只需调用session.get('attribut') 即可获得您想要的值。

    Here is a longer explanation with some examples.

    【讨论】:

    • 当我尝试使用: System.out.println(session.get("loginId"));我有这个错误无法实例化动作,GestionMissions,为命名空间'/'null中的'executemission'定义
    • 我可以从 loginaction 而不是从其他操作中获取它,我该如何解决?
    • 第一个错误似乎与此问题无关(但与该特定操作的实例化有关)。对于第二个问题,请使用一些示例代码更新您的问题。
    猜你喜欢
    • 1970-01-01
    • 2013-06-19
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2017-01-17
    • 2014-10-07
    相关资源
    最近更新 更多