已经存储在一个字符串的XML响应,我想在GSP页面一个textarea来显示它
String responseXml = ""<Cars>
<Car>benz</Car>
<Car>audi</Car>
<Car>bmw</Car>
</Cars>""
在GSP页面
<g:textArea name="xml" value="${responseXml}" rows="20" cols="100"/>
在获得textarea的响应,这样的XML标签单行
<Cars><Car>benz</Car><Car>audi</Car><Car>bmw</Car></Cars>
但我想要的是显示XML标记在这样的textarea
<Cars>
<Car>benz</Car>
<Car>audi</Car>
<Car>bmw</Car>
</Cars>
我创建了一个标签库为这一点,因为我在muitiple地方这个问题:
/**
* Preserves line breaks and spaces of the supplied value when displaying as html.
* @param value - The value to preserve linebreaks of.
*/
def preserveFormat ={ attrs, body ->
def value = attrs.value
out << value.encodeAsHTML().replace('\n', '<br/>\n').replace(' ',' ').replace('\t',' ')
}
/**
* Displays xml content in a pretty formatted way and preserves formatting in html view.
*/
def displayXml={attrs, body ->
def xml = attrs.xml
assert xml
def prettyXml = groovy.xml.XmlUtil.serialize(xml)
out << preserveFormat(value:prettyXml)
}
我更新了我一个额外的taglib根据下面的评论建议在一个漂亮的方式,也能格式化XML回复。