我有一个巨大的数据集,并希望显示一些格式的数据。
这是该方法的基本外观:
@ManagedOperation(description = "return html")
@ManagedOperationParameters({@ManagedOperationParameter(name = "someVal", description = "text")})
public String returnAsHtml(String someVal)
{
return "some formatted xml";
}
看起来可以将XSLTProcessor配置为使用XSLT模板。但是,我在互联网上找不到在MX4J上下文中使用XSLT进行html转换的任何示例。谁能提供一个样例XSLT模板?
发布于 2010-03-29 15:32:40
我想出的一种方法是在XSL模板中使用java脚本来提取和解析字符串。确保测试浏览器(IE与非IE),并使用正确的解析器。
发布于 2011-01-20 17:49:28
如果有人回到这个问题上来,有两件事浮现在脑海中:
1) MX4J有几个默认的HttpCommandProcessorAdaptor实现。这些操作是从路径映射的。对于JMX操作(在Spring中又称为ManagedOperation ),MX4J使用像/invoke?operation=returnAsHtml这样的URL
它将被传递给InvokeOperationCommandProcessor以创建一个XML文档,其结果只是您返回的内容的toString(),在一个名为'return‘的属性中。它还在一个名为‘return’的属性中传回返回类型。如果您只需将&template=identity添加到invoke 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上设置它。这可以替代“调用”处理器,也可以有一个全新的处理器。
希望这能有所帮助
https://stackoverflow.com/questions/2399993
复制相似问题