问一个关于一个session的问题在struts2 中

问一个关于一个session的问题在struts2 中

问题描述:

先看看看我的一段代码,
[code="java"]public String toLogin() throws Exception
{
try {
Map session=ActionContext.getContext().getSession();
register = authorService.loginValid(userName, passWord);
if(register !=null){
session.put("register",register);
id = register.getId();
return SUCCESS;
}else{
addActionError("用户名/密码不匹配");
this.setTip("对不起您的帐号或密码有误!");
return "failure";
}

    } catch (Exception e) {
        // TODO: handle exception
        this.setTip("<font color='red'>对不起,系统出现故障,请稍后再登录!</font>");
        e.printStackTrace();
        return "failure";
    }

}

[/code]

[code="java"]
/login/authorlogin.jsp
/login/authorlogin.jsp

countmessage.action?id=${id}


method="countMessagAuthor">
/login/author.html

[/code]
再看这个页面的数据展现

[code="java"]

[/code] magazineOA/countmessage.action?id=5 第一次登录红色 部分显示在页面上当时就在刷新页面后是${session.register.realName}不再显示。我想是action的问题吧,但是怎么才能把这个为题解决呢? [b]问题补充:[/b] 我想应该是,因为如果我刷新页面的话应该又一次执行countmessage的action,没有执行前面那个action的问题呀,但是应该怎么解决呢?? [b]问题补充:[/b] 本页面刷新后变成这样 [code="java"]
 用户名:
[/code] [b]问题补充:[/b] 我使用的框架。我只刷新这一个页面,那个没有关系吧?????? 这个问题就是在框架里出现好像、。 [b]问题补充:[/b] [code="java"] body{ padding:0px; margin:0; color:#073a93; background:url(../images/sleftbg.jpg) repeat-y; font-size:12px;} a,area { blr:expression(this.onFocus=this.blur()) } /* for IE */ :focus { outline: none; } .stitle{ background: url(../images/s_title.jpg) no-repeat; width:82px; height:36px; line-height:30px; padding-left:30px; font-weight:bold;} .SleftDiv{margin-left:6px; margin-top:10px; border:solid 1px #7db5ff;width:112px; background-color:#fff;} ul{padding:0; margin:0; list-style:none;} ul li{ width:100px; background:url(../images/s_leftOL.gif) no-repeat 15px 5px;} ul li a{padding-left:30px; line-height:25px; color:#073a93; text-decoration:none;} ul li a:hover{color:#ffcc00;} 用户信息



[/code]
这是我的左侧页面的代码
[code="java"]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



无标题文档

通知公告

  • 稿签
  • 内容
  • 作者信息
  • 稿件状态
中文文题  
英文文题  
作    者  
关 键 词  
中文摘要  
英文搞要  
回避专家  
推荐专家  
专业类型  
新闻列表2
新闻列表3
新闻列表4


<!-- /*第一种形式 第二种形式 更换显示样式*/ function setTab(name,cursel,n){ for(i=1;i<=n;i++){ var menu=document.getElementById(name+i); var con=document.getElementById("con_"+name+"_"+i); menu.className=i==cursel?"hover":""; con.style.display=i==cursel?"block":"none"; } } //-->


 已提交的稿件
序号 文    题 投稿日期 稿件状态
       



[/code]
这是右侧代码。就是显示夜明那个
我的页面没有其他东西,因为其他只是一个静态没有动态代码使用,贴出来也没有多大帮助呀,[code="java"]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



无标题文档

 用户名:
通知公告

  • 稿签
  • 内容
  • 作者信息
  • 稿件状态
中文文题  
英文文题  
作    者  
关 键 词  
中文摘要  
英文搞要  
回避专家  
推荐专家  
专业类型  
新闻列表2
新闻列表3
新闻列表4


<!-- /*第一种形式 第二种形式 更换显示样式*/ function setTab(name,cursel,n){ for(i=1;i<=n;i++){ var menu=document.getElementById(name+i); var con=document.getElementById("con_"+name+"_"+i); menu.className=i==cursel?"hover":""; con.style.display=i==cursel?"block":"none"; } } //-->


 已提交的稿件
序号 文    题 投稿日期 稿件状态
       



[/code]

这是一个输出后查看源代码显示的

还有就是我action的代码

[code="java"]public String countMessagAuthor()throws Exception{
Map session = ActionContext.getContext().getSession();
Message messag = new Message();

int count;
lastreadTime = messag.getLastreadTime();
if(lastreadTime != "未读")
{
lastreadTime ="未读";
receiveName = id;
messag.setLastreadTime(lastreadTime);
messag.setSendflag(sendflag);
messag.setReceiveName(receiveName);
messag.setReceiveflag("0");
List list = messageService.findByExample(messag);
count = list.size();
session.put("count", count);

    }
    else 
    {
        count = 0;
        session.put("count", count);

    }
    return SUCCESS;
    }[/code]

[b]问题补充:[/b]
整个流程很简单的,就是我登陆要调用loginAction action里的方法并且把register用session保存起来,如果我登陆成功后转到执行这个countMessagAuthor方法,进行一些业务操作后跳转我要显示的页面,第一次显示时可以的但是我刷新页面后那个本来该显示session值消息啦 我有三块显示frame,我用的是用spring来管理struts2 的action
[b]问题补充:[/b]
不管那个,都是一样的结果。左边,右边,还是整个页面都是这样的。
[b]问题补充:[/b]
[code="java"]public String toLogin() throws Exception

{

try {

Map session=ActionContext.getContext().getSession();

register = authorService.loginValid(userName, passWord);

if(register !=null){

session.put("register",register);

id = register.getId();

return SUCCESS;

}else{

addActionError("用户名/密码不匹配");

this.setTip("对不起您的帐号或密码有误!");

return "failure";

}

    } catch (Exception e) {   
        // TODO: handle exception   
        this.setTip("<font color='red'>对不起,系统出现故障,请稍后再登录!</font>");   
        e.printStackTrace();   
        return "failure";   
    }   

}  [/code] 这个和我那个要调用的如果是右面刷新时这个没有啦,至于左边那个没有也是一样的好像

[code="java"]
public String countMessagAuthor()throws Exception{
Map session = ActionContext.getContext().getSession();
//看看这里,只要一调用这个countMessagAuthor Action,就重新创建一个Message 对象,
Message messag = new Message();

int count;
//这个变量应该是Message [color=red]对象默认的值吧,默认值是什么??是不等于"未读"的吗[/color]
lastreadTime = messag.getLastreadTime();
if(lastreadTime != "未读")
{
lastreadTime ="未读";
receiveName = id;
messag.setLastreadTime(lastreadTime);
messag.setSendflag(sendflag);
messag.setReceiveName(receiveName);
messag.setReceiveflag("0");
List list = messageService.findByExample(messag);
count = list.size();
session.put("count", count);

    }
    else 
    {
        count = 0;
        session.put("count", count);

    }
    return SUCCESS;
    }

[/code]

刷新页面session还是存在啊,不应该出这个问题的

你页面给的太少信息了吧,
执行countmessage的action的页面部分呢?

你把你那个页面完整的粘出来来看看,可能是你页面写得有问题

你把你的操作流程,具体清楚描述一遍,详细点

刷新页面->是指刷新哪个页面,是整个页面还是左边的或右边的