Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSP标记文件:检查嵌套_Jsp_Jsp Tags - Fatal编程技术网

JSP标记文件:检查嵌套

JSP标记文件:检查嵌套,jsp,jsp-tags,Jsp,Jsp Tags,我正在使用JSP编写一些嵌套的自定义标记。我知道有两种方法可以做到这一点:1)编写扩展BodyTagSupport的标记处理程序,2)编写标记文件 在第一种方法中,代码很难看。如果我使用JspWriter编写下面的代码,我会在最终的HTML输出中得到这个字符串,而不是编译后的JSP生成的有意义的输出 <bean:write name="label"> 但因为我使用了标记文件,所以我不太清楚它的父类是什么 我该如何解决这个问题呢?我太傻了,忘记了我可以将上面的Java代码插入JSP

我正在使用JSP编写一些嵌套的自定义标记。我知道有两种方法可以做到这一点:1)编写扩展BodyTagSupport的标记处理程序,2)编写标记文件

在第一种方法中,代码很难看。如果我使用JspWriter编写下面的代码,我会在最终的HTML输出中得到这个字符串,而不是编译后的JSP生成的有意义的输出

 <bean:write name="label">
但因为我使用了标记文件,所以我不太清楚它的父类是什么


我该如何解决这个问题呢?

我太傻了,忘记了我可以将上面的Java代码插入JSP,并在页面上设置一个参数,将“父”传递给JSP页面

我不确定我是否应该结束这个问题。因为答案有点愚蠢。高级StackOverflow用户请提供建议。

好吧,标记文件本身并不像标记处理程序那样是一个“类”(我的意思是,很明显,它和所有JSP文件一样,但你明白我的意思)

当我必须使用标记文件进行“嵌套”标记时,我要做的是将我的状态数据放在请求的“众所周知的名称”下。实际上,两个标签之间共享了一个“秘密”

例如,在一个标记文件中,我可以执行以下操作:

<%
jspContext.setAttribute("_myWellKnownName", new java.util.LinkedHashMap(), PageContext.REQUEST_SCOPE);
%>

然后,在后面的标记文件中:

<%
    java.util.LinkedHashMap map = (java.util.LinkedHashMap) jspContext.findAttribute("_myWellKnownName");
%>

然后我就可以随心所欲地操纵这个变量

在父标记中,执行子标记的代码,因此在我的映射(在本例中)被填充之后,我可以在此时对它执行任何需要执行的操作

我发现的基本模式是将子标记的结果收集到类似列表的内容中,然后在子标记完成所有工作后,父标记将实际数据呈现到页面中

在我的标签中,如果我的父母嵌套在其他父母中(即,一个标签将与另一个标签的状态冲突),我没有必要这样做,但很明显,从一般意义上说,这种方法可能会有问题。但对我来说仍然有效。

也许会有帮助

迈克尔·布莱德2010年11月9日凌晨1:23 我知道这已经快一年了 现在,但正如我碰巧看到的 我想,我自己也开始使用标签文件了 我会纠正规定的限制 在这里事实上,注射疫苗是可能的 多个部分使用什么JSP术语 “片段”和使用jsp:invoke 标签。以下是方法:

<%
    java.util.LinkedHashMap map = (java.util.LinkedHashMap) jspContext.findAttribute("_myWellKnownName");
%>