我正在尝试创建一个标记文件,以某种方式“扩展”<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>
的正文?
此致
/吉米亨德里