Какой весенний видоискатель играет хорошо с angularjs?
Я пишу веб-приложение, используя angularjs и spring mvc в качестве поставщика услуг REST и в качестве поставщика частичного представления (я также использую angular-ui-router, чтобы иметь несколько вложенных партиалов). В настоящее время я не пользуюсь языками шаблонов, так как планирую делать все в угловом формате, однако у каждого отдельного преобразователя представлений, который я пробовал, есть какой-то тип языка шаблонов, который конфликтует с угловым и либо вылетает из приложения, и / или заполняет мои журналы. с ошибками.
Сначала я попытался использовать InternalResourceViewResolver, но не повезло, так как кажется, что он ожидает только файлы .jsp и больше ничего не показывает.
Тогда я попробовал использовать Thymeleaf. Thymeleaf следует стандарту XML, что вынудило меня переписать большую часть моего html в соответствии с требованиями xml, и после того, как я это сделал, он умер при обнаружении&&
внутри директивы ng-show. Так что не повезло и с этим.
Тогда я попробовал Velocity. Мне больше всего повезло со скоростью. Он хорошо обслуживает html-файлы, не останавливается при обнаружении ошибок синтаксического анализа и позволяет мне обслуживать частичные представления так же, как это делает InternalResourceViewResolver. Однако при обнаружении угловых переменных с префиксом$
Velocity пытается проанализировать их как переменные VTL и заполняет мои журналы сообщениями вроде
velocity - Null reference [template 'clients/createOrEdit.html', line 1, column 65] : $invalid cannot be resolved.
Все продолжает работать как надо, но я не единственный, кто оставляет ошибки, и я не нашел способа отключить VTL.
Это мой текущий опыт работы с распознавателями представлений.
У меня также была идея обрабатывать файлы .html как статические ресурсы (что они вроде как делают до того, как angular делает это по волшебству), используяmvc:resources
но без какого-либо преобразователя представления мое приложение не запустилось, даже если я установил main layout.html как файл приветствия в web.xml
Мой вопрос Что я должен использовать в качестве преобразователя представления, чтобы он хорошо работал с angularjs, и если мне даже следует использовать преобразователи представления?
РЕДАКТИРОВАТЬ: Я пытаюсь использоватьContentNegotiatingViewResolver
и я получаю:
DEBUG ContentNegotiatingViewResolver - Requested media types are [text/html] based on Accept header types and producible media types [*/*])
DEBUG ContentNegotiatingViewResolver - No acceptable view found; returning null
DEBUG DispatcherServlet - Could not complete request
javax.servlet.ServletException: Could not resolve view with name 'layout.html' in servlet with name 'springDispatcherServlet'
webapp-config.xml (contextconfig в сервлете диспетчера)
<mvc:annotation-driven />
<!-- Resources -->
<mvc:resources location="/libs/" mapping="/libs/**" />
<mvc:resources location="/css/" mapping="/css/**" />
<mvc:resources location="/js/" mapping="/js/**" />
<!-- Angular application data -->
<mvc:resources location="/WEB-INF/appjs/" mapping="/appjs/**" />
<!-- View locations -->
<mvc:resources location="/WEB-INF/html/" mapping="/**"/>
<!-- Controllers -->
<context:component-scan base-package="com.mrplow.controller" />
<!-- Views -->
<util:map id="contentMediaTypes">
<entry key="json" value="application/json" />
<entry key="html" value="text/html" />
</util:map>
<!-- <util:list id="defaultViews"> -->
<!-- <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" /> -->
<!-- </util:list> -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
p:order="1"
p:ignoreAcceptHeader="false"
p:defaultContentType="text/html"
p:mediaTypes-ref="contentMediaTypes" />
LayoutController.java
@Controller
@RequestMapping("/")
public class LayoutController {
@RequestMapping
public String getIndexPage() {
return "layout";
}
}