将自定义标记中的jsp:param标记传递给jsp:include标记?

时间:2018-02-28 05:58:49

标签: jsp include jsp-tags tagfile

我正在尝试创建一个标记文件,以某种方式“扩展”<jsp:include>标记。基本上我想添加自定义逻辑,以便在某些情况下它将包含一个不同的文件。我对常规的<jsp:include>标记工作得很好,但是当图片中有<jsp:param>个标签时,我仍在苦苦挣扎。

我希望能够做到的是:

在普通的jsp代码中, main.jsp

<custom:jsp-include page="include.jsp">
    <jsp:param name="a" value="b"/>
    <jsp:param name="x" value="y"/>
</custom:jsp-include>

在标记文件中, customInclude.tag

...

<jsp:include page="${someJspFile}">
    //SOMETHING-UNKNOWN-HERE
</jsp:include>

预期结果是调用变量 someJspFile 中的文件,并在 main.jsp 中定义所有参数。即在这种情况下参数 a = b x = y

但我不知道如何实现这一目标。我已尝试使用<jsp:doBody var="bodyContent"/>,然后将${bodyContent}放入<jsp:include>,但这只会导致错误。错误取决于我为标记文件定义的正文内容的类型。如果我将其设置为“tagdependent”,则错误为:

  

期待具有“名称”和“价值”的“jsp:param”标准动作   属性

...如果我将其设置为“无脚本”,那么错误是针对main.jsp代码的,错误是:

  

jsp:param操作不能在jsp:include之外使用,   jsp:forward,或jsp:params elements

当然必须有办法实现这一目标吗?或者更一般的观点,必须有一种方法可以将主体内容传递为未触及的,从一个标记(在本例中为我的自定义标记文件)到另一个标记(在本例中为<jsp:include>),对?

请注意,并不是特别可能将${bodyContent}置于我所追求的<jsp:include>标记内,因为我可以看到如果它可以工作,如何将其视为eval类型函数,并且这不是我追求的eval的可能性。也许有一些特殊的占位符或者类似的东西,我可以放在<jsp:include>标记内,这样就可以让它像我从 main.jsp中粘贴<jsp:param>标签一样复制进入 customInclude.tag <jsp:include>的正文?

此致

/吉米亨德里

0 个答案:

没有答案