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
我讨厌那些糟糕的文档……我浪费了太多时间在谷歌上搜索基本的东西是如何工作的……好吧,这是我的问题:
我有一个在 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