나는 angularjs와 spring mvc를 REST 서비스 제공자로 사용하고 부분 뷰 공급자 (나는 다중 중첩 된 부분을 가질 수 있도록 각도 ui 라우터도 사용하고있다)를 작성하고있다. 나는 모든 각도에서 모든 일을 할 계획이므로 템플릿 언어에 대한 사용법은 현재 가지고 있지 않지만, 내가 시도한 모든 단일 뷰 해석기는 각도와 충돌하고 응용 프로그램을 충돌 시키거나 내 로그를 채우는 템플릿 언어 유형을 가지고 있습니다. 오류가 있습니다.어느 spring view resolver가 angularjs와 잘 맞습니까?
먼저 InternalResourceViewResolver를 사용해 보았지만 행운이 없다. 단지 .jsp 파일 만 기대하고 다른 것은 표시하지 않는 것 같다.
그런 다음 나는 Thymeleaf를 사용해 보았습니다. Thymeleaf는 xml 요구 사항을 따르기 위해 대부분의 html을 다시 작성해야하는 XML 표준을 따르며,이를 수행 한 후에 ng-show 지시문 내에서 &&
이 발생할 때 사망했습니다. 그래서 그걸로 운이 없다.
그런 다음 Velocity를 시도했습니다. 나는 지금까지 속도와 함께 가장 운이 좋았다. html 파일을 멋지게 처리하고, 구문 분석 오류가 발생하면 멈추지 않고 InternalResourceViewResolver와 동일한 방식으로 부분 뷰를 제공 할 수 있습니다. 그러나 $
속도 접두어 각 변수가 발생시 VTL 변수로 구문 분석을 시도하고
velocity - Null reference [template 'clients/createOrEdit.html', line 1, column 65] : $invalid cannot be resolved.
모두가 정상적으로 작동 계속 같은 메시지와 함께 내 로그를 채우고 난 그냥 오류가 떠날 수있는 사람이 아니에요 , 나는 VTL을 사용할 수 없게 만들 방법을 찾지 못했습니다.
이것이보기 확인자에 대한 나의 경험입니다.
또한 mvc:resources
을 사용하여 .html 파일을 정적 리소스로 처리하겠다는 생각이 들었습니다. 그러나 어떤보기 리졸버도없이 메인 레이아웃을 설정하더라도 내 애플리케이션을 시작하지 못했습니다. html이 web.xml의 환영 파일이됩니다.
제 질문은입니다. 각도 분석기로 사용하여 각도 분석기와 함께 사용할 수 있도록해야하며보기 확인자를 사용해야하는 경우에도 사용해야합니다.
편집 : 나는 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'
웹 애플리케이션-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";
}
}
감사합니다. 하나의 질문. 미디어 유형은 xml - application/xml을 언급합니다. 그것도 html 파일을 설명합니까? – MrPlow
예, html 에 사용할 수 있습니다. 내 대답을 업데이 트했습니다. 참조하십시오 –
참조하십시오. 한 가지 더 묻습니다. 파일은 어디에서 보입니까? 그것은 내 견해를 찾을 수 없을 것 같습니다. 현재 구성으로 OP를 업데이트하겠습니다. – MrPlow