jsp insertAttribute 将参数传递给 tiles

jsp insertAttribute pass parameter to tiles

我讨厌那些糟糕的文档……我浪费了太多时间在谷歌上搜索基本的东西是如何工作的……好吧,这是我的问题:

我有一个在 jsp 中迭代的对象列表...在每次迭代中我想插入一个 "sub-jsp" 并将当前对象传递给此 jsp。 ...

方块定义:(版本 3.0.5)

<definition name="projectAdmin/execAproject" extends="defaultTemplate">  
       <put-attribute name="title" value="Projekt-Design" />  
       <put-attribute name="body" >
        <definition template="/WEB-INF/projectAdmin/execAproject.jsp">
            <put-attribute cascade="true" name="subCustomItem_form" value="/WEB-INF/projectAdmin/subCustomItem_form.jsp" />  
        </definition>
       </put-attribute>
   </definition>

execAproject.jsp

<c:forEach items="${items}" var="item" varStatus="theCount">
    <tiles:insertAttribute name="subCustomItem_form" >
        <tiles:putAttribute name="super_name" value="bla" />
    </tiles:insertAttribute>
</c:forEach>

subCustomItem_form.jsp

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <div class="custom_item_form">
        Custom-Item ${super_name}
    </div>

如您所见,我迭代了项目列表...并且在每个迭代步骤中 "subCustomItem_form.jsp" 是 "included"。我也尝试通过 variable/parameter "super_name" 但它不起作用。

问题

问题是,变量 "super_name" 从未显示在 "subCustomItem_form.jsp" 中。我没有任何错误或调试消息或类似的东西。显示 jsp "subCustomItem_form.jsp",但不显示变量。

问题

如何传递变量?在本例中,变量 "super_name"。 (稍后我想传递item-object。

感谢您的帮助!

编辑 我稍微解决了这个问题...好的,现在我可以访问 jsp "subCustomItem_form.jsp" 中的变量 "super_name"。因此我只改变了访问该变量的方式:

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
    <div class="custom_item_form">
        Custom-Item <tiles:getAsString name="super_name"/>
    </div>

如果我正确理解 problem/solution 那么我的错误是我在 "jsp"-context 或 pagecontext 中有一个变量,但不是 JSTL 变量...但在那个时候我做了一些事情,比如 我 "changed" 从 jsp 到 JSTL-"context" 的变量...所以我必须访问变量JSTL 方式......我知道我的描述不是很好,但我希望你能理解我......这样我就能够传递一个字符串变量。但是我仍然无法传递或访问对象。

当前Problem/Question 我如何传递对象并以这种方式访问​​该对象“${object.variable} 还是我必须将对象写入上下文对象?是否可以以 JSTL 方式访问对象?

我希望你能帮助我!

V

解决方案

好的,我终于完成了...我试图找到一种只使用 JSP 而不使用 JSTL 的方法...我发现了以下 link: Passing parameters to another JSP file using <jsp:include> tag 有描述的解决方案,所以我更改了 "execAproject.jsp" 的代码如下:

<c:if test="${item.projStepItem.item_type eq 'customItem'}">
    <div>
        <c:set var="super_name" value="${item}" scope="request"/>
        <tiles:insertAttribute name="subCustomItem_form" />
    </div>
</c:if>

好的,如果我正确理解解决方案,"c:set"行会在请求范围内设置变量,这样我就可以访问子jsp中的变量,就像一个变量由后端根据请求提供。这就是为什么它对请求范围内的变量也很重要。 在我看来,所有这些文档都相当糟糕,所以我希望能帮助遇到类似问题的任何人。

祝你有愉快的一天。

V