我正在从事一个涉及从 Struts 1 迁移到 Struts 2 版本的项目。在一个jsp中,我有迭代器
<s:iterator var="each_part" value="#request.rule.parts" status="status">
其中'rule'是一个带有arraylist'parts'的POJO(它也是一个包含POJO的列表)。
在迭代器内部,我包含了一个使用jsp:include
.
<s:iterator var="each_part" value="#request.rule.parts" status="eachpart">
<jsp:include page="/jsp/edit_rule_part.jsp">
<jsp:param name="id" value="<%=id%>" />
</jsp:include>
在包含的jsp中,即edit_rule_part.jsp,我多了一个迭代器标签,
<s:iterator var="cond" value="#request.rule.parts.conditions">
但这不起作用。我也尝试过使用
<s:iterator var="cond" value="#each_part.conditions">
其中'each_part'是s:iterator
父jsp中父的id,但它没有用。
所以结构看起来像这样
JSP1
-s:iterator (id = 'each_part')
-jsp:include
-JSP2
-s:iterator (id = 'cond')
所以问题是JSP2 中的'cond' 迭代器想要引用JSP1 中的'each_part' 迭代器。
如何在另一个 jsp 文件中的另一个迭代器变量中访问迭代器类型的变量“each_part”?
通常我们在 value = #.list 的子迭代器中引用父迭代器,但在这种情况下,两个迭代器都在不同的 jsps 上。
早在 struts1 中,这是使用嵌套根标签实现的。