代码之家  ›  专栏  ›  技术社区  ›  azaveri7

如何显示两个合并的Arraylist,它们使用s:在同一个s中合并:在Struts2中选择

  •  0
  • azaveri7  · 技术社区  · 11 年前

    我的jsp上有两个数组列表,一个数组列表存储在servletcontext中,另一个存储在Struts2中的请求中。

    现在,我使用s:merge合并它们,如下所示:

    <s:merge id="thirdList">
       <s:param value="#application[@list1]"/>
       <s:param value="#request.list2"/>
    </s:merge>
    

    我使用以下代码检查了它们是否合并。

    <s:iterator value="thirdList">
       <s:property/>
    </s:iterator>
    

    这两个数组列表都是POJO,所以它在jsp页面上显示对这些POJO的引用。

    现在我想将整个列表显示为一个下拉列表,所以我使用它。

    <s:select ...... list="thirdList">
    </s:select>
    

    因此,在jsp页面上,下拉列表显示下拉列表中的POJO。现在我想在下拉列表中显示一些字符串值,而不是POJO引用。

    问题是:list1是object1的类(POJO)数组列表,list2是object2的类(POJO)的数组列表,并且希望在下拉列表中显示它们的不同属性。

    例如,列表1中有5个object1类型的POJO,列表2中有10个object2类型的POJ,我的下拉列表应该包含总共15个条目。

    为了在jsp页面上显示这些属性,我使用了以下代码

    <s:iterator value="thirdList">
            <s:property value="id_list1"/>
            <s:property value="description_list1"/>
            <s:property value="id_list2"/>
            <s:property value="description_list2"/>
    </s:iterator>
    

    该列表已正确打印。现在在s:select标记中,使用的属性是listKey和listValue。

    因为我必须使用合并列表来显示 <s:select> 标签,我的价值应该是什么 id_list1 , id_list2 , description_list1 , description_list2 我必须用在 listKey 和 listValue .

    2 回复  |  直到 10 年前
        1
  •  0
  •   Aleksandr M    11 年前

    首先: 不要在视图层中执行此类工作。 您应该编写一个对象,该对象将保存您需要在JSP中显示的值,并对两个列表进行迭代,以创建 看法 对象,并将其放入某个列表中。然后在JSP中,您可以迭代 看法 物体。

    话虽如此。。。朝着粗糙而非最佳实践的解决方案前进。 我将在列表中演示,其中包括 String -s和 Integer -s、 如果它是我们想要调用的整数 intValue() 方法,如果是String toUpperCase() 方法。因为默认情况下,调用not existing属性不会产生我们可以比较的值,所以我们将 阿拉伯联合酋长国 使用 #attr 以评估对实例属性的调用。

    <s:select list="{'teststring', 2, 'somestring', 3}"
       listValue="#attr['top.intValue()'] == null ? top.toUpperCase() : top.intValue()" />
    

    注意这一点 不会 如果您的属性中有空值,则工作。

    同样,不要在视图中执行 .

        2
  •  0
  •   azaveri7    11 年前

    你是对的Aleksandr。我不应该在视图层中这样做。但我想知道,s:merge标记有什么用。

    为了解决这个问题,我所做的如下:

    在action类中,我创建了一个新的arraylist。我创建了一个新的POJO,比如POJO t,它有两个成员变量int‘id’和string‘value’。

    对于这两个arraylist,我重复了一遍,将它们的id和描述复制到新的POJO t中,并将这个“t”实例插入到新创建的arraylist中。然后我将这个数组列表存储到请求对象中。

    然后在jsp页面的s:select标记中,我遍历了这个新列表,对于listKey和listValue,我使用

    listKey="id" and listValue="value"
    

    这起到了作用。

    解决难题的简单方法。