对于Web应用程序如果我在Spring和Struts之间选择使用Freemarker,哪一个顺利,或者我宁愿问,哪个MVC框架可以与Freemarker顺利集成?
答案 0 :(得分:1)
Spring框架提供了将FreeMarker用于视图层所需的一切。
答案 1 :(得分:1)
两者都有很好的freemarker支持。它很容易打开。 Struts2更基于pojo。 Spring更接近servlet api。 spring.ftl中Spring的默认宏需要一些工作,你可能需要自己动手。如果某个对象不存在而不是优雅地测试它并且如果它不存在则继续运行,则某些宏会爆炸。
我喜欢Spring通过注释验证的应用程序比Struts 2默认验证更好。但是,在Struts2中,重定向上的持久验证错误更容易。对于Spring,你最终需要推出自己的解决方案,我觉得框架应该隐藏更多。需要使用容易出错的spring.bind宏与freemarker模板比使用它更麻烦。
Spring 3.1应该为生活在重定向上的验证错误提供更好的支持。
另请注意,使用Spring我通常使用多个视图解析器。例如我仍然支持.jsp。
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html"/>
<entry key="ftl" value="text/html"/>
<entry key="xml" value="application/xml"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="favorPathExtension" value="true"/>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
</list>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true"/>
<property name="order" value="1"/>
<property name="prefix" value="/"/>
<property name="suffix" value=".ftl"/>
<property name="contentType" value="text/html;charset=UTF-8"/>
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="requestContextAttribute" value="rc"/>
<property name="exposeSessionAttributes" value="true"/>
<property name="exposeRequestAttributes" value="true"/>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
</bean>