【问题标题】:Session value not displaying in jsp struts 2会话值未在 jsp struts 2 中显示
【发布时间】:2014-11-22 08:20:39
【问题描述】:

我在struts 2中有一个简单的应用程序,它允许用户输入名称并提交。在struts 2动作类的服务器端创建一个新会话并将用户名的值存储在会话中。在用户中。 jsp 我试图显示存储在会话中的值,但它没有显示任何内容。

Index.jsp 的代码如下

<body>
<form action="welcomeUser.action">
    <input type="text" name="user">
    <input type="submit" value="Submit">
</form>
</body>

struts.xml中的代码如下

<action name="welcomeUser" class="hart.test.Welcome">
                    <result name="success">user.jsp </result>
 </action>

hart.test.Welcome 中的代码如下

public class Welcome extends ActionSupport
{
    private String user;
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String execute()
    {
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpSession session=request.getSession();
        //Checking session is new and creating a session
        if (session.isNew() == false) {
            session.invalidate();
            session = request.getSession(true);
            } 
        session.setAttribute("user1", user);

        return SUCCESS;
    }
}

User.jsp中的代码如下

<body>
    Welcomeee <s:property value="%{#session.user1}"/>
</body>

问题是它只显示'Welcomeee'。谁能告诉它的原因

【问题讨论】:

  • 当我在 User.jsp 中使用 JSP 表达式标签(
  • 有时评估一个表达式似乎很明显,但同样的表达式可能无法工作,因为它没有可显示的内容。

标签: java jsp struts2


【解决方案1】:

在 User.jsp 文件的开头添加 Struts 2 标记库定义:&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;。

【讨论】:

  • 是的,我已经放了 。但是仍然没有得到值。
【解决方案2】:

Struts2 使用 Session Map,它是底层 HttpSession 的包装器。通过实现 SessionAware 接口来使用它,like described in this answer:

public class Welcome extends ActionSupport implements SessionAware {

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

    private String user;
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }

    public String execute() {
        session.put("user1", user);    
        return SUCCESS;
    }
}

【讨论】:

  • 在我的原始代码中,如果我想显示存储在会话中的值,那么我应该在执行方法之外(使用 getter 和 setter)声明会话变量,并且在 user.JSP 中我应该写 Welcomeee .如果我错了请纠正我
猜你喜欢
  • 2013-01-04
  • 2011-03-05
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
相关资源
最近更新 更多