floger1 2009-04-20 09:54
浏览 306
已采纳

问一个关于一个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] 这个和我那个要调用的如果是右面刷新时这个没有啦,至于左边那个没有也是一样的好像
  • 写回答

6条回答 默认 最新

  • wanghaolovezlq 2009-04-20 15:56
    关注

    [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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)