因为js运行时在加载页面之后的,你onload之后虽然是取到了数据,但是没有动态的赋值给页面,当你第一次进去的时候session为空,当你第二次刷新的时候session里面有值所有之后再你session失效前都是正常的。el表达式不能完成动态赋值,如果想要效果,可以用javascript动态赋值。

解决方案 »

  1.   

    可以在ajax函数中设置相应的回调函数, 回调函数中用js来动态设置页面中的值。
      

  2.   

    我又一个笨笨的解决方法:你可以在登录jsp头部 添加代码段 判断你页面需要的数据是否为空  如果为空就用request 或者 respons 请求你的action中获取数据的方法 然后返回到登录页面
      

  3.   

    其实之前想到过一个方法,不是用ajax提交,只是用window.location.href去请求action,这样的话我可以通过el动态的获得自己想要的数据,可是这样有点不好就是,要设置一个标记,用来标记是第一次访问,不然页面会总是提交(因为也是由onload来触发)。。于是我就改用ajax来尝试了,结果就出现了上述问题,通过上面几位的意见,我尝试在回调函数中修改页面,现在却发现,回调中接收到的responseXML总是为null,调试时候明明有数据的,现在我真是迷糊了。。
      

  4.   

    我用 ajax提交到后台action并在action中给session重新赋值,后返回页面success,session中的值不改变,为什么?
      

  5.   

    又是这个问题,因为ajax是异步请求,你异步登录的操作只是服务器端登录成功了,但是客户端还没有及时相应过来,  要想获取登录session  就要 把获取session的操作也做成异步就好了
      

  6.   

    建议ajax    回调取值
    var s=<%=session.getAttribute("myName")%>;
      

  7.   

    这种的话最好的方法是url直接访问action,此这action处理完数据后返回这个jsp。
    如果你不想这个改,就用ajax吧,请求的action需要返回你需要的数据。为什么a.jsp得到不你要的数据是因为代码运行的顺序为:
    1、a.jsp中的el表达式
    2、js,onload 的函数
    3、Action
    第一步还没有数据就获取不到。如果用url直接访问action的方式顺序:
    1、action
    2、a.jsp中的el表达式,再返回a.jsp
    这样不用js请求了。