1

我正在尝试创建一个以某种方式“扩展”标签的标签文件<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=bx=y 。

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

期望具有“name”和“value”属性的“jsp:param”标准操作

...如果我将其设置为"scriptless",则错误是 main.jsp 代码,错误:

jsp:param 操作不得在 jsp:include、jsp:forward 或 jsp:params 元素之外使用

当然必须有一种方法来实现这一目标?或者从更一般的角度来看,必须有一种方法可以将正文内容原封不动地从一个标签(在这种情况下是我的自定义标签文件)传递到另一个(<jsp:include>在这种情况下),对吧?

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

问候

/吉米

4

0 回答 0