如何在jsp中翻译生成的自定义标签

时间:2013-01-28 19:29:17

标签: jsp jsp-tags

我正在尝试在java中生成一个树结构以在html中显示。我可以通过在Java中生成纯HTML来实现它,但我更喜欢在标记中保留树组件(root,branch,leaf)的html而不是为了可维护性。是否有一个很好的方法可以将包含自定义标记(或任何标记)的java字符串转换为html?

我尝试了一些事情:

- 在控制器中构建字符串,然后在jsp中打印(通过scriptlet或EL) 字符串未翻译但按原样打印,即显示在浏览器中

- 在控制器中构建结构,将其传递给生成字符串的自定义标记(更多自定义标记) 与上述问题相同。无法让它重新翻译身体。我尝试了BodyTagSupport和SimpleTagSupport

- 使用核心标签 结构太复杂,所以这不是一个选项

-scriptlets 不能很好地使用标签

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您的代码会生成包含其他自定义代码实例的HTML代码。事实上,它不会生成HTML,而是生成JSP代码。这是不允许的。 JSP容器不会重新解析和解释标记生成的代码。

但是你没有理由不能自己调用​​你的标记方法(或者你的JSP标记,如果实现为标记文件)来实现递归。这是一个使用JSP标记文件(tree.tag,将节点集合作为参数)的简单示例:

<%@ tag %>
<%@ attribute name="nodes" required="true" rtexprvalue="true" type="java.util.collection" %>
<ul>
    <c:forEach var="node" items="${nodes}">
        <li><c:out value="${node.text}"/>
            <c:if test="${!empty node.subNodes}">
                <myTags:tree nodes="${node.subNodes}">
            </c:if>
        </li>
    </c:forEach>
<ul>