日期:2014-05-17  浏览次数:21107 次

急求高手,使用ssh框架写项目时,就是先执行action,数据查到了,不能显示在页面上
<s:action name="selInfoAll" namespace="/" executeResult="true"></s:action>

这句话应该是执行了,SQL语句都打印了,可是在当前页面
<div>
   <s:iterator value="%{list}" id="li" status="st">
   <s:textfield value="%{#li.getT_email()}"></s:textfield>
   </s:iterator>
   </div>

查询时,没有结果

------解决方案--------------------
这个要看你action中是把值放到栈中还是map映射中了。能贴一下你action中存放数据的代码莫
比如:
   放在map映射中:
Collection<Station> lists = this.stationService.findAllStation();
ActionContext.getContext().put("list", list);
获取的时候
<s:iterator value="list" id="li" status="st">
     <s:textfield value="%{#li.getT_email()}">
</s:textfield></s:iterator>

   放在值栈中:
Collection<Station> lists = this.stationService.findAllStation();
ActionContext.getContext().getValueStack().getRoot().push(list);
获取的时候
<s:iterator value="top" id="li" status="st">
     <s:textfield value="%{#li.getT_email()}">
</s:textfield></s:iterator>

你那种获取方式也没问题,就是有点不规范,应该是action存放值的时候出现了问题
------解决方案--------------------

<div>
          <s:iterator value="%{list}" id="li" status="st">
              <s:textfield value="%{#li.getT_email()}"></s:textfield>
          </s:iterator>
      </div>

这个代码段value="%{list}"虽然可以这么写,但是没有意义,直接value="list" 下面既然是textfield不是property为什么把值放在value里面,本来用#就是取堆栈的值,后面还要加get方法做什么,如果你后台list里面的pojo里面有get方法,直接<s:textfield name="t_email"></s:textfield> 改了之后就行了