我有大量数据,想要以某种格式显示数据。
该方法基本上如下所示:
@ManagedOperation(description = "return html")<br/>
@ManagedOperationParameters({@ManagedOperationParameter(name = "someVal", description = "text")})<br/>
public String returnAsHtml(String someVal)<br/>
{<br/>
return "some formatted xml"; <br/>
}<br/>
看起来 XSLTProcessor 可以配置为使用 XSLT 模板。然而,我在互联网上找不到任何在 MX4J 上下文中使用 XSLT 进行 html 转换的示例。谁能提供一个示例 XSLT 模板吗?
最佳答案
如果有人回到这个问题,我会想到两件事:
1) MX4J 有几个 HttpCommandProcessorAdaptor 的默认实现。这些操作是从路径映射的。对于 JMX 操作(Spring 术语中的 ManagedOperation),MX4J 使用/invoke?operation=returnAsHtml 等 URL
这将被传递到 InvokeOperationCommandProcessor 以创建一个 XML 文档,其结果只是您在名为“return”的属性中返回的任何内容的 toString()。它还在名为“returnclass”的属性中传回返回类型。如果您只需将 &template=identity
添加到调用 URL,您就可以看到这一切。
我提到这一切是因为一种选择是实现您自己的“invoke.xsl”。 MX4J 中的只是调用 renderobject 模板:
你瞧,您在 mbean_attributes.xsl 中找到了这一点,其中的注释准确地显示了您需要执行的操作:
<xsl:template name="renderobject">
<xsl:param name="objectclass"/>
<xsl:param name="objectvalue"/>
<xsl:choose>
<xsl:when test="$objectclass='javax.management.ObjectName'">
<xsl:variable name="name_encoded">
<xsl:call-template name="uri-encode">
<xsl:with-param name="uri">
<xsl:value-of select="$objectvalue"/>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<a href="/mbean?objectname={$name_encoded}">
<xsl:value-of select="$objectvalue"/>
</a>
</xsl:when>
<xsl:otherwise>
<!-- Use the following line when the result of an invocation
returns e.g. HTML or XML data
<xsl:value-of select="$objectvalue" disable-output-escaping="true" />
-->
<xsl:value-of select="$objectvalue"/>
</xsl:otherwise>
</xsl:choose>
将“disable-output-escaping”设置为 true 即可解决问题
2) 另一种选择是编写自己的 HttpCommandProcessorAdaptor,并将其设置在 HttpAdapter 上。这可以替换“调用”处理器,或者您可以拥有一个全新的处理器。
希望有帮助
关于java - 格式化 HTML 作为 MX4J HTTP 页面方法调用的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399993/