<s:iterator value="list" status="row">
                <tr>
                    <td><s:property value="state" /></td>
                </tr>
</s:iterator>list中保存的是product对象,product对象有个属性值是state,short类型。我想在页面中state显示的不是数字,而是经过转换的字符串,比如:当
state=1,显示 "进行中"
state=2,显示 "关闭"
state=3,显示 "取消"
state=4,显示 "暂停"请问这要这么做啊。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【BearRui】截止到2008-06-25 10:56:05的历史汇总数据(不包括此帖):
    发帖数:32                 发帖分:4492               
    结贴数:31                 结贴分:4392               
    未结数:1                  未结分:100                
    结贴率:96.88 %            结分率:97.77 %            
    值得尊敬
      

  2.   

    做一个静态Map,编号为你的id
    比如
    static Map<Integer,String> map = new HashMap<Integer,String>();
    static {
      map.put(1,"进行时");
      ...
    }
      

  3.   

    这个只能后台先做好吧,对应关系是你的业务,应该有共通类先对应好。要不你就狂加<logic:equal>标签
      

  4.   


    如果这样的话,在前台<s:property 中怎么使用该map。我是初学者,^_^
      

  5.   

    两种方法,一种是如上的在得到list的action里直接做转换,另外一种是在页面做判断,添加if标签:
    <s:if test="list.state==1">
      <td>进行中</td>
    </s:if>
    <s:else if....其他条件
      

  6.   

    “如果这样的话,在前台 <s:property 中怎么使用该map。”
    前台像使用list一样直接在iterator里用,不过如果你在要显示的数据中还包括product的其他字段,就不适合这种方法。用if去转换好些
      

  7.   

    可以在页面直接用<s:if test=...来直接判断
    或者你在product中定义一个属性 private String msg = "";
    public String getMsg() {
    String result = "";
    switch (state) {
    case 1:
    result = "进行中";
    break;
    case 2:
    result = "关闭";
    break;
    case 3:
    result = "取消";
    break;
    case 4:
    result = "暂停";
    break;
    }
    return result;
    }调用时候<s:iterator value="list" status="row"> 
                    <tr> 
                        <td> <s:property value="msg" /> </td> 
                    </tr> 
    </s:iterator> 
      

  8.   

    楼上的方法不错,可以直接在domain中写,哪所有使用该对象的地方都会自动转换了。谢谢