如何在父JSP中获取子变量值

时间:2015-03-31 14:16:42

标签: html jsp jstl jsp-tags

我在Parent JSP中定义了一个变量,并根据某些条件从jsp中访问了相同变量的标记文件。

这是我的代码..

父JSP:

<c:set var="replaceParams" value=":${attribute.name}:${value.name}" />
<c:set var="removeURL" value="${fn:replace(queryParams, replaceParams, '')}" /> <!-- Suppose value is A -->
<%@ taglib prefix="cms2" tagdir="/WEB-INF/tags/spine/surgery"%>
<c:forEach items="${attributeDTOList}" var="attribute" varStatus="status">  
   <cms2:attributeSubFeatureRemove attribute="${attribute}" /> 
</c:forEach>
<!-- Print removeURL showing "A". It has to show "AB" --> 

attributeSubFeatureRemove.tag -

   <%@ attribute name="attribute" required="true" type="com.medtronic.b2b.core.dto.HCCB2BClassificationAttributeDTO" %>
   <%@ attribute name="removeURL" required="true" type="java.lang.String" %>
   <c:forEach items="${attribute.subFeatures}" var="subAttribute">
        <c:forEach items="${subAttribute.attributeValues}" var="subValue">
           <c:if test="${ subValue.preSelectionRequired}">
             <c:set var="replaceParams" value=":${subAttribute.name}:${subValue.name}" />
             <c:set var="removeURL" value="${fn:replace(removeURL, replaceParams, '')}" />            
          </c:if>
        </c:forEach> 
     </c:forEach>
     <!-- Now Suppose removeURL value changed to AB-->

在上面的代码中,父JSP具有变量removeURL,它是String Type。我在标记文件中发送此removeURL变量。标记文件将更改相同的removeURL变量以保存更新的String。

现在如果我将尝试在父JSP中获取removeURL,它将在父jsp中打印与之前相同的值。更新后的计算值(在标记文件中)未反映在父JSP中。

我对范围是否会使removeURL变量保持一致感到困惑。请帮助我在Parent JSP中获取更新值。

2 个答案:

答案 0 :(得分:0)

请在此处查看我对您的其他问题的回复:How to pass Object using jsp:include param tag into another jsp

我认为这将使您的生活更轻松,并使这个问题不再相关。如果你同意其他技术更好,我会关闭这个问题。

答案 1 :(得分:0)

您可以使用scope属性

指定变量的范围
`<c:set var="removeURL" value="${fn:replace(queryParams, replaceParams, '')}" scope="request" />`

您还可以使用pagesessionapplication