我正在开发一个涉及从Struts 1迁移到Struts 2版本的项目。在一个jsp中,我将迭代器作为
<s:iterator var="each_part" value="#request.rule.parts" status="status">
其中'rule'是带有arraylist'parts'的POJO(也是包含POJO的列表)。
在迭代器中,我使用jsp:include
包含一个jsp。
<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'是父jsp中父s:iterator
的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中,这是使用嵌套根标记实现的。