【问题标题】:Struts Iterator Inside another Iterator [duplicate]另一个迭代器内部的Struts迭代器[重复]
【发布时间】:2015-09-20 03:19:34
【问题描述】:

我有一个列表,里面还有另一个列表。我试图通过struts在jsp中显示,但我做不到。这是我的代码

<s:iterator id="parent" value="parent" status="stat">
    <s:property value="parentName"/>
    <s:iterator id="children" value="children" status="stat">
        <s:property value="childrenName"/>
    </s:iterator>
</s:iterator>

显示的是父名,而不是子名。我试图在去jsp之前显示孩子的名字,它正在登录java。我试图搜索这个解决方案,但答案并没有解决我的问题。 这是我的父类。

class Parent{
  private ArrayList<Children> children;
  private String parentName;

  // Getter setter
}

这是儿童课

class Children{
  private String childrenName;

  // Getter setter
}

我的代码有什么问题?

【问题讨论】:

标签: java jsp struts2 iterator ognl


【解决方案1】:

它应该可以工作。

只是一些小的更正和建议:

  • id 已弃用,请使用 var。如果您的情况与示例中的情况类似,则甚至不需要它,那就完全避免放置它:
  • 两个status同名不好。是您和 OGNL 先生的困惑之源。更改名称,或避免使用其中一个或两个名称。
  • 最好使用接口而不是实现来声明你的对象:

    private List<Children> children;
    

然后试试这个:

<s:iterator value="parent">
    <s:property value="parentName"/>
    <s:iterator value="children">
        <s:property value="childrenName"/>
    </s:iterator>
</s:iterator>

编辑

【讨论】:

  • 是的,我找到了一个构造函数,但它在父类中。我没有给出 arg 构造函数,所以它应该可以正常工作吗?但还是不行
  • @gcalex5 您正在迭代 所有 List 中的 Chidren 实例。 &lt;s:iterator value="children"&gt; 是一个迭代器,以 List 作为源。例如,您所说的内容对于使用&lt;s:property /&gt; 打印一个孩子是必要的
  • 是的,问题在于 getter setter,正如您在 EDIT 中提到的那样
  • 我找了两个小时的解决方案。谢谢安德里亚。你太棒了。
  • 这个例子对我也有帮助。
【解决方案2】:

由于您的父对象有一个子对象列表,因此您需要告诉 Struts 您想要哪个子对象实例,因此您需要将子迭代器更改为类似的内容

s:iterator id="children" value="children" var="children_list_var">
    <s:property value="#children_list_var.childrenName"/>
</s:iterator>

查看此链接以更好地了解正在发生的事情 https://struts.apache.org/docs/ognl-basics.html

编辑:假设一切都已正确映射,那么我会查看您的 getter/setter 方法并确保它使用正确的方法。您可以尝试的另一件事是向您的迭代器添加一个变量,以确保您获取正确的实例。像我上面的代码示例一样,我改变了。

它的作用是获取列表中的当前子对象并返回子名称变量。我认为这是一个关于解决方法的回合,但如果其他答案不起作用,那应该得到你想要的

【讨论】:

  • 父级在迭代时被推入值堆栈。指children是指当前迭代的父元素的children,不需要指定
  • 我试过了,但是好像不行。
猜你喜欢
  • 2013-06-17
  • 2018-09-23
  • 2012-10-23
  • 2015-01-01
  • 2017-11-11
  • 2012-03-23
  • 2018-05-24
  • 2013-07-08
  • 2010-10-09
相关资源
最近更新 更多