2012-04-05 49 views
2

我有一个自定义标签,根本没有任何身体。我试图以编程方式更换空体,为了简单起见,Java自定义标签包含生成的JSTL:不解释

[<c:out value="SUCCESS!"/>] 

的目标是看到“[成功了!]”通过使用标记的JSP中显示,但我看到的是“[ ]“,如果我查看生成的源代码,我可以看到c:out语句写在括号中的页面上,但没有解释。

有没有一种常见的方法来实现这一点?最终目标将是使用其他自定义标签而不是“c:out”标签。标签/内容将来自数据库。 我尝试了SimpleTagSupport和BodyTagSupport的不同技术,但都没有成功。事实上,我不确定技术上是否可以做到这一点,因为当时标签已经被解释了。但是,那么应该怎么做呢?

回答

1

the JSP is translated into a servlet时,服务器标记(如自定义标记或JSTL标记)会转换为Java代码。例如,下面的JSP代码:

<c:out value="FooBar" /> 

被转换为类似这样的Servlet中:

.... 
OutTag outTag = (OutTag) tagHandlerPool.get(OutTag.class); 
outTag.setPageContext(pageContext); 
outTag.setParent(null); 
outTag.setValue(new String("FooBar")); 
int evalOut = outTag.doStartTag(); 
.... 

在您的自定义标签,你可以调用其他Java类/方法,能写HTML代码(不是JSP代码)到响应。

[<c:out value="SUCCESS!"/>]没有被解释,因为在这个级别它只是一个字符串,直接写入响应。

相关问题