我正在尝试创建一个以某种方式“扩展”标签的标签文件<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”,那么错误是:
期望具有“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>
中一样工作?
问候
/吉米