jsp insertAttribute将参数传递给tile

时间:2016-12-07 14:27:43

标签: jsp tiles

我讨厌那些糟糕的文件...我在谷歌上搜索基本的东西是如何工作的... ...好吧,这是我的问题:

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

tiles-definition :(版本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>

正如您所看到的,我迭代了项目列表......并且在每个迭代步骤中,&#34; subCustomItem_form.jsp&#34;是&#34;包括&#34;。我还尝试传递变量/参数&#34; super_name&#34;但它没有用。

问题

问题是,变量&#34; super_name&#34;永远不会显示在&#34; subCustomItem_form.jsp&#34;中。我没有任何错误或调试消息或类似的东西。 jsp&#34; subCustomItem_form.jsp&#34;显示,但不显示变量。

问题

如何传递变量?在这种情况下变量&#34; super_name&#34;。 (后来我想传递item-object。

感谢您的帮助!

修改 我解决了一下这个问题...好吧,现在我能够访问变量&#34; super_name&#34;在jsp&#34; subCustomItem_form.jsp&#34;中。因此我只改变了访问该变量的方式:

<%@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>

如果我正确理解了问题/解决方案,那么我的错误就是我在&#34; jsp&#34; -context或pagecontext中有一个变量,但不是作为JSTL变量...但是那时我做一些像 的事情我改变了#34;从jsp到JSTL的变量 - &#34; context&#34; ...所以我必须以JSTL方式访问变量...我知道我的描述不是很好,但我希望你能理解我...通过这种方式,我能够传递一个字符串变量。但我仍然无法通过或访问某个对象。

现在的问题/问题 如何以这种方式传递对象并访问此对象&#34; $ {object.variable}或者我是否必须在上下文对象中编写对象?是否可以以JSTL方式访问对象?

我希望你能帮助我!

V

1 个答案:

答案 0 :(得分:0)

解决方案

好的,我终于完成了...我试图找到一种方法,只使用JSP而不使用JSTL ....我找到了以下链接: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”-line会在请求范围内设置变量,这样我就可以访问子jsp中的变量,就像后端在后端给出的变量一样一个要求。这就是为什么它对请求范围中的变量也很重要。 在我看来,所有这些的文档都相当糟糕,所以我希望能帮助任何有类似问题的人。

度过愉快的一天。

V