gpt4 book ai didi

css - 带有整个 html 模板的 spring mvc

转载 作者:行者123 更新时间:2023-11-28 07:47:20 26 4
gpt4 key购买 nike

我有一个使用 spring-mvc 和 html 的 spring-boot 应用程序。没有 Thymeleaf,没有 JSP。我希望能够将主题应用到我的应用程序,就像 Joomla 和 Wordpress 等 CMS 所做的那样。问题是每篇 Spring-MVC 模板文章/帖子都在谈论使用单个 css 文件或使用类似 Tiles 的东西。如果我有 15 个主题,每个主题都在自己的文件夹中(它们通常似乎有很多 css、js 和 html 文件),我不确定如何将该主题动态应用到我的应用程序(例如通过下拉菜单选择)。

有没有人做过这样的事情?从概念上讲,我没有看到问题,但如果没有手动移动/template 下的每个模板相关文件,我不知道如何最好地完成此操作。

最佳答案

可以使用 Velocity 作为 viewResolver。

我正在使用这个配置:

<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/views/"/>
<property name="velocityProperties">
<props>
<prop key="input.encoding">UTF-8</prop>
<prop key="output.encoding">UTF-8</prop>
</props>
</property>
</bean>
<!-- #Velocity -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".vm" />
<property name="layoutUrl" value="layout1.vm" />
<property name="contentType" value="text/html;charset=UTF-8" />
</bean>

属性 layoutUrl 是您的默认模板,它是您的 webapp/WEB-INF/views/文件夹中的一个 HTML 文件:

layout1.vm:

<html>
<body>
<h1>Hello world 1!</h1>

$screen_content

</body>
</html>

velocity View Resolver 会将 $screen_content 替换为您的 Controller 响应的 View 内容:

我的 Controller .java

...

@RequestMapping("/mycontroller")
public String myController() {
return "myView1";
}
...

所以,如果 webapp/WEB-INF/views/中的 View myView1.vm 是这样的:

<h2> Foo Bar! </h2>

请求/myApp/mycontroller 的结果如下:

<html>
<body>
<h1>Hello world 1!</h1>

<h2> Foo Bar! </h2>

</body>
</html>

如果你想使用另一个模板,你可以在你的 Controller 上动态设置它,在你的模型变量上设置值:

...

@RequestMapping("/mycontrollerWithADifferentLayout")
public String myController2(Model m) {
m.addAttribute("layout", "layout2");
return "myView1";
}
...

在模型上设置“布局”属性时,Velocity 将使用提供的 View 作为模板。

关于css - 带有整个 html 模板的 spring mvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30626250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com