【问题标题】:How to translate generated custom tags in a jsp如何在jsp中翻译生成的自定义标签
【发布时间】:2013-01-29 04:04:55
【问题描述】:

我正在尝试在 java 中生成一个树结构以在 html 中显示。我可以通过在 Java 中生成纯 html 来使其工作,但我更愿意将树组件(根、分支、叶)的 html 保留在标签中,而不是为了可维护性。有没有一种好方法可以将包含自定义标签(或任何标签)的java字符串翻译成html?

我尝试了一些方法:

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

-在控制器中构建结构,将其传递给生成字符串的自定义标签(更多自定义标签) 和上面一样的问题。无法让它重新翻译正文。我尝试了 BodyTagSupport 和 SimpleTagSupport

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

-scriptlet 不能很好地使用标签

有什么想法吗?

【问题讨论】:

    标签: jsp jsp-tags


    【解决方案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>
    

    【讨论】:

    • 这是我的总体目标,但仅嵌套标签是不够的。我要找的是得到一串由容器解析和解释的java中生成的jsp代码。
    • 太好了,谢谢。我会暂时搁置一下,以防其他人有更多要添加的内容。如果不是,或者如果确认不可能,我会接受答案。
    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多