2014-09-27 42 views
1

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

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'.Can谁能告诉它的原因

+0

当我使用在User.jsp JSP表达标记(<(%)= session.getAttribute(“用户1”)来显示存储在会话中的值,则发现但是使用struts 2标签却没有显示任何人请给出建议的原因 – Kiranmuralee 2014-09-27 12:36:30

+1

有时评估一个表达式似乎很明显,但同样的表达式可能无法正常工作,因为它没有任何显示内容 – 2014-09-28 14:04:17

回答

-1

Struts2使用会话映射,它是底层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; 
    } 
} 
+0

谢谢..明白....这一个帮助。 – Kiranmuralee 2014-09-28 12:33:31

+0

在我原来的代码,如果我想显示存储在会话中的值,那么我应该声明sessio在执行方法之外的变量(使用getter和setter)和user.JSP我应该编写Welcomeee 。米错了 – Kiranmuralee 2014-09-28 17:16:22

0

添加Struts 2的标签库的定义:<%@ taglib prefix="s" uri="/struts-tags" %>在日User.jsp文件的开头。

+0

是的,我已经把<%@ taglib prefix =“s”uri =“/ struts-tags”%>。但是仍然没有获得价值 – Kiranmuralee 2014-09-28 12:05:58