用户登录时候,在java里面保存用户账号如下:
request.getSession().setAttribute("adminid", str);在jsp页面取值:
<s:hidden name="adminid" value="#request.adminid"></s:hidden>
<s:hidden name="adminid" value="#session.adminid"></s:hidden>
<s:hidden name="adminid" value="#request.session.adminid"></s:hidden>
都取不到,请问怎么才能取到adminid的值。如果我想用el表达式取,又应该怎么取。谢谢大家。

解决方案 »

  1.   

    Map session = ActionContext.getContext.getSession("");
    session.put("adminid", str);那么页面上就可以写成value="#session.adminid"了至于你这个应该怎么写,可以试试value="${adminid}"
      

  2.   

    LZ是保存在request里面,二次请求后这个值就没了
      

  3.   

    你可以用%{#request.adminid}
    或者用el:
    ${sessionScope.adminid}
      

  4.   

    <input type="hidden" name="account" value="${sessionScope.adminid}">
      

  5.   

    LZ确定在用Struts2???
    Struts2里面有能这样那Session吗?
      

  6.   

    request.getSession().setAttribute("adminid", str); 
      

  7.   

    确定啊。这个adminid都取出来了
    String adminid = (String)session.getAttribute("adminid");
    可以在页面中这样子取到
      

  8.   

     貌似el表达式都用不了了,无论写${sessionScope.adminid}还是${adminid}在页面上都会报错,一进jsp就报错,更别说取值了。
    javax.servlet.ServletException: org.apache.jasper.JasperException: /admin/addAdmin.jsp(103,0) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
    root cause org.apache.jasper.JasperException: /admin/addAdmin.jsp(103,0) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
      

  9.   

    struts2标签不能和el表达式共用
      

  10.   

    %{#request.adminid}取取到一个空的值''
      

  11.   

    不是吧!!!
    你在Sturts2的哪里调用者方法???
    你的Action继承什么?
      

  12.   

    public class Login extends ActionSupport {
    public String execute() {
            boolean flag=login.checkUser(getUsername(), getPassword());
            if(flag){
             return "succ";
            }
            return "fail";
        }
    }
    public boolean checkUser(String userid,String password){
    HttpServletRequest request = ServletActionContext.getRequest();
    request.getSession().setAttribute("adminid", str);
    return....;
    }jsp:
    <s:hidden name="adminid" value="${sessionScope.adminid}"></s:hidden>
      

  13.   

    ${sessionScope.adminid}这个可以取到的啊。
    要不你先到Action中:String adminid = (String) request.getSession().getAttribute("adminid");
                        System.out.println(adminid); 
    看在控制台能打印出来不.
    不过我之前经常用这个方法将用户ID保存到session中,那样能取出值来呀.
      

  14.   

    等等你在什么地方给Session设值了
      

  15.   

    HttpServletRequest request = ServletActionContext.getRequest();

    String  a = request.getParameter("name");
    这样能拿到页面上的值!
    HttpSession session = request.getSession();

     String s = (String)session.getAttribute("name");
    这样取不到的
      

  16.   

    就是用户登录时,在验证登陆账号和密码名的时候
    StringBuffer sql=new StringBuffer();
    sql.append("select userID,userPurview from co_admin where userID='")
    .append(userid.trim())
    .append("' and userPassword='")
    .append(MD5Util.MD5Encode(password.trim()))
    .append("';");
    HttpServletRequest request = ServletActionContext.getRequest();
    try {
    List list=jdbc.getQueryResult(sql.toString());
    if(list!=null&&list.size()>0){
    String [] info=(String[]) list.get(0);
    request.getSession().setAttribute("adminid", info[0]);
    request.getSession().setAttribute("purview", info[1]);
    String adminid = (String) request.getSession().getAttribute("adminid"); 
            System.out.println("adminid1:"+adminid); 
    request.getSession().setAttribute("islogin", "true");
    flag=true;
    }
      

  17.   

    我真的很怀疑楼主到底是不是用Struts2了
    Struts很少这样拿值得。就算我刚刚学习的时候老师也说用类似Struts的From取值。。
      

  18.   

    <s:property value="#session."/>你看下在页面输出有没??
      

  19.   

    现在不单是取值的问题了,而是我在jsp中写${xxxx},里面无论写什么,一进页面就报错
      

  20.   

    而且如果你需要给hidden 设值得话我可以加建议你使用事件。。传递给js来做
    这样更符合点。当然页面上也要隐藏标签!
      

  21.   

    <input type="button" value="提交" onclick="return sumbit('do','<s:property value='#session.name"/>');">
    function sumbit(doAction,value){
    }
      

  22.   

    要走了
    里面是获得from
    在获得hidden的name 然后赋值。
    在提交就ok了!!!
      

  23.   

     <s:hidden value="%{#session.adminid}" name="adminid" id="adminid"></s:hidden>
      

  24.   

    1.
    request.getSession().setAttribute("adminid", str); 
    <s:hidden name="adminid" value="#session.adminid"></s:hidden> 2.Struts2 是否支持EL。struts2.1的版本中struts2标签不支持EL表达式。
      

  25.   

    <s:hidden name="adminid" value="#session.adminid"> </s:hidden>  
      

  26.   

    楼主别试了,在很多情况下是不成功的,我试验了好久了,也是报的和你一样的错误。尽量使用OGNL吧!
      

  27.   

    在struts2中,最好别使用EL,使用OGNL
      

  28.   

    不对呀 用#session.adminid 应该能取到值啊
      

  29.   

    我现在还不会运用struts2.正好学习下。
      

  30.   

    自己仔细看异常不就明白了么?STRUTS2标签里是不能用EL表达式的!!!!!用OGNL,27楼已经给了代码啦
      

  31.   


    你怎么能这样做咯,ActionContext session = ActionContext.getContext();然后session.getSession();如果想保存值的话 session.put("键","值");
      

  32.   

    楼上的,18楼没错了,你的SESSION跟他的SESSION都不是一个东西,你的是Map,别人的是HttpSession,仔细观察下
      

  33.   

    ${},可以得到session request里的东西
      

  34.   

    <input type="hidden" name="account" value="${adminid}">
      

  35.   

    这样可以用,struts2标签里不能用EL,一般用OGNL。不能混了
      

  36.   

    #XXX是迭代取值的吧,不迭代直接value="<s:property value="adminid"/>"
    想用EL表达试就别用s:hidden ,直接用原始的hidden
    <input type="hidden" name="adminid" value=${adminid}"> 
      

  37.   

    你这是用struts1的思维套用struts2的方法。你那样根本没有将str放到“adminid”的session堆栈中,而只是放到了一个普通的session中,所以不能用“#key”的方式取值,而应该用el表达式“${}”来取值。
      

  38.   

    如果直接显示,${sessionScope.adminid}可以 ,结合struts2.0标签则不能用el表达式,必须用ognl表达式#session.adminid 或者%{#session.adminid}
      

  39.   

    楼主弄好了吗?我刚写作业也是和你一样啊。我是s:textfield 里面value要放用户的name怎么都取不到。我导入了Struts2的标签库又导入了JSTL标签库 这样我在页面用c:可以用EL表达式,但是s:的标签用EL都会报错。实验了好多次OGNL都没成功啊