昨天做个东西,不知道为什么用<s:hidden>怎么都无法成功向action传值,不知道是ognl语法不对还是别的原因,一下是我的代码(我用的模型驱动):
<s:hidden name="news.inputAdmin.id" value="%{#session.admin.id}"></s:hidden>    <!-- 失败,value取不到 --><s:property value="%{#session.admin.id}"/>     <!-- 这个倒是能在页面显示 -->
后来无奈换成普通html的:<input type="hidden"  name="news.inputAdmin.id" value=<%=((Admin)session.getAttribute("admin")).getId()%>才得以成功请教高手,如何从session中取值给Struts2的hidden标签,先谢过了

解决方案 »

  1.   


    如果 news.inputAdmin.id和%{#session.admin.id}都有值,楼主认为struts应该显示哪一个?不妨去看看struts2的标签实现源码
      

  2.   

    我页面所转向的action里有个news对象,news对象里又包含inputAdmin对象,id是它的主键,而这里hidden的值就是从session中取出来set到inputAdmin里去的
      

  3.   

    从你的叙述看来,唯一的解释就是 news.inputAdmin.id和%{#session.admin.id}值冲突。
      

  4.   

    <s:hidden name="news.inputAdmin.id" value="%{#session.admin.id}"> </s:hidden>
    改成
    <s:hidden name="news.inputAdmin.id" > </s:hidden>
    把value去掉
      

  5.   

    去掉?那传到action里的值是什么?我要传的值在session里的啊
      

  6.   

    是可以获取到值
      例如:<s:property value="%{#session.slUser.userName}"/> 
                            <s:hidden name="ss" value="%{#session.slUser.userName}"/>  源码:
          何素欢 
                            <input type="hidden" name="ss" value="何素欢" id="ss"/>
      

  7.   

    关键是,这个值是给后台一个叫news的POJO的inputAdmin的id属性,如果用ss,当然能传过去了
      

  8.   


    其实这样就可以传到action 中了
      

  9.   

    这样也能完成从session中取值?
      

  10.   

    LZ从session取值还需要加%{}吗?这不是相当于把取到的值传回到action里面了吗?
    <s:hidden name="news.inputAdmin.id" value="%{#session.admin.id}"> </s:hidden>
    不妨改成这样试试
    <s:hidden name="news.inputAdmin.id" value="%#session.admin.id"> </s:hidden>
      

  11.   

    这样还不对些..!LZ用的是ModelDriven接受请求参数! 唯一的解释就是 你这个hidden的参数是被ModelDriven里面的这个属性接受了, 而非Action.! 
    我不清楚你是否在你的Model和Action中同时有这个属性news.inputAdmin.id呢?