小编典典

Struts2迭代器标记-从对象列表访问特定的对象值

jsp

有没有一种方法可以从对象列表访问特定对象的属性。

我有一个实验室列表,每个实验室对象都有多个属性。使用标签,我们可以从实验室列表中访问Lab1对象的attribute1的值吗?

假设:我的一个Lab对象的属性名为labname“ BP”,而另一个实验室对象的属性labname为“ A1c”。
现在,如果要使用“ BP” 访问labvalue实验室对象的属性,labname该如何实现?


阅读 196

收藏
2020-06-08

共1个答案

小编典典

如果您不想使用地图,那会更容易,那么您可以利用OGNL的“列表选择”功能:

从集合中选择

OGNL提供了一种使用表达式从集合中选择某些元素并将结果保存到新集合中的简单方法。我们从数据库术语中称此“选择”为从表中选择行的子集。例如,此表达式:

listeners.{? #this instanceof ActionListener}

返回作为ActionListener类实例的所有那些侦听器的列表。

[…]

然后,在您描述的情况下,如果只想过滤labname属性等于“ BP” 的列表元素,则为:

<span>
    labvalue attribute for the (first, if any) laboratory with labname="BP" is : 
    <s:property value="labsList.{^ #this.labname == 'BP' }[0].labvalue" />
</span>

根本不需要迭代器。

您还可以迭代 计划 / 选定的 列表,btw;)

<span>
    All labvalue attributes for all the laboratories with labname="BP" are : 
    <s:iterator value="labsList.{? #this.labname == 'BP' }" >
        <s:property value="labvalue" />
    </s:iterator>
</span>

请享用

2020-06-08