<s:iterator value="categories" var="c">
<s:property value="#c.name"/>
<s:property value="#c.description"/>
<a href="admin/Category_updateInput?id=<s:property value="#c.id"/>">修改</a>
<a href="admin/Category_delete?id=<s:property value="#c.id"/>">删除</a>
</s:iterator>
  <form action="admin/Category_update" method="post">
  <input type="hidden" name="category.id" value='<s:property value="category.id"/>'>
   name:<input name="category.name" value="<s:property value="category.name"/>" />
   description:<textarea name="category.description"><s:property value="category.description"/></textarea>
   <input type="submit" value="submit" /> 
  </form>为什么取值的时候,有的需要加#,有的不需要加#?

解决方案 »

  1.   

    对,在从栈那边取值就不用# 而从context那边取值就要在前面加#像request,session等都是保存在contxt里面所以要从request,session里面取值 要 #request.要取的值迭代器 var属性就是把迭代的对象保存在context里面  所以取值前面也要加#
      

  2.   

    这个问题黑好区别的,嘿嘿,如果刚开始不是太明白什么时候需要加什么时候不需要加,你就在你的界面加在<s:debug />标签,这样你就能清楚地看到哪些变量需要加#才能问题,哪些不需要加了
    保存在valueStack里的也就是值栈里的。可以直接访问,不需要加#;
    保存在Stack Context里的变量需要加#才能访问