我有一个列表,里面有另一个列表。我试图通过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
}
我的代码出了什么问题?
答案 0 :(得分:3)
它应该有用。
只是一些小的更正和建议:
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>
编辑:
答案 1 :(得分:0)
由于你的父对象有一个子对象列表,你需要告诉Struts你想要的子节点的实例,所以你需要将子迭代器更改为这样的
event.end
请查看此链接,以便更好地了解正在发生的事情 https://struts.apache.org/docs/ognl-basics.html
编辑:假设所有内容都已正确映射,那么我会查看你的getter / setter方法并确保它能够正确映射。您可以尝试的另一件事是向迭代器添加一个变量,以确保您正在抓取正确的实例。与我上面的代码示例相似,我改变了。
这样做是抓取列表中的当前子对象并返回子名称变量。我认为这是一个关于它的方式,但如果另一个答案不起作用,这应该得到你想要的