|
对于最新稳定版本,请使用Spring Framework 7.0.1! |
XSLT 视图
XSLT 是一种 XML 转换语言,作为网络视图技术非常受欢迎 应用。如果你的应用,XSLT可以作为视图技术的不错选择 自然涉及XML,或者你的模型是否可以轻松转换为XML。如下 部分展示了如何将XML文档作为模型数据生成并进行转换 Spring Web MVC 应用中的 XSLT。
这个例子是一个简单的 Spring 应用程序,它创建了控制器并将它们添加到模型映射中。地图和视角被归还
我们XSLT视图的名称。有关春季网页MVC的详细信息,请参见注释控制器控制器接口。XSLT 控制器将单词列表转换为简单的 XML
文档准备好进行变革。
豆
配置是简单 Spring Web 应用的标准配置:MVC 配置
必须定义一个XsltViewResolverBEAN 和常规 MVC 注释配置。
以下示例展示了如何实现:
-
Java
-
Kotlin
@EnableWebMvc
@ComponentScan
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public XsltViewResolver xsltViewResolver() {
XsltViewResolver viewResolver = new XsltViewResolver();
viewResolver.setPrefix("/WEB-INF/xsl/");
viewResolver.setSuffix(".xslt");
return viewResolver;
}
}
@EnableWebMvc
@ComponentScan
@Configuration
class WebConfig : WebMvcConfigurer {
@Bean
fun xsltViewResolver() = XsltViewResolver().apply {
setPrefix("/WEB-INF/xsl/")
setSuffix(".xslt")
}
}
控制器
我们还需要一个能够封装我们词生成逻辑的控制器。
控制器逻辑被封装在@Controller类别,其中
处理方法的定义如下:
-
Java
-
Kotlin
@Controller
public class XsltController {
@RequestMapping("/")
public String home(Model model) throws Exception {
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element root = document.createElement("wordList");
List<String> words = Arrays.asList("Hello", "Spring", "Framework");
for (String word : words) {
Element wordNode = document.createElement("word");
Text textNode = document.createTextNode(word);
wordNode.appendChild(textNode);
root.appendChild(wordNode);
}
model.addAttribute("wordList", root);
return "home";
}
}
import org.springframework.ui.set
@Controller
class XsltController {
@RequestMapping("/")
fun home(model: Model): String {
val document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()
val root = document.createElement("wordList")
val words = listOf("Hello", "Spring", "Framework")
for (word in words) {
val wordNode = document.createElement("word")
val textNode = document.createTextNode(word)
wordNode.appendChild(textNode)
root.appendChild(wordNode)
}
model["wordList"] = root
return "home"
}
}
到目前为止,我们只创建了一个DOM文档并将其添加到模型地图中。注意你
也可以加载XML文件作为资源并且用它代替自定义DOM文档。
市面上有软件包可以自动“支配”。 一个对象图,但在 Spring 中,你可以完全灵活地创建 DOM 无论你选择哪种方式,都可以从你的模型中获得。这防止了XML游戏的转换 在模型数据结构中占据过大部分,使用工具时存在风险 管理DOMification流程。
转型
最后,是XsltViewResolver解析“主”XSLT模板文件并合并
DOM 文档记录进去生成我们的视图。如XsltViewResolver配置,XSLT 模板存在于战争文件WEB-INF/xsl目录
并以XSLT文件扩展名。
以下示例展示了XSLT变换:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/">
<html>
<head><title>Hello!</title></head>
<body>
<h1>My First Words</h1>
<ul>
<xsl:apply-templates/>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="word">
<li><xsl:value-of select="."/></li>
</xsl:template>
</xsl:stylesheet>
前面的变换以以下HTML形式表示:
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello!</title>
</head>
<body>
<h1>My First Words</h1>
<ul>
<li>Hello</li>
<li>Spring</li>
<li>Framework</li>
</ul>
</body>
</html>