Sto scrivendo una webapp usando angularjs e spring mvc come provider di servizi REST e come provider di viste parziali (sto anche usando angular-ui-router in modo da poter avere più partial parziali). Al momento non ho alcun utilizzo per i linguaggi dei modelli poiché ho intenzione di fare tutto in modo angolare, tuttavia ogni singolo risolutore di vista che ho provato ha un tipo di linguaggio modello che si scontra con angolare e arresta l'applicazione e/o riempie i miei registri con errori.Quale risolutore a molla è piacevole con angularjs?
Per prima cosa ho provato a utilizzare InternalResourceViewResolver ma non ho fortuna in quanto sembra che si aspetti solo file .jsp e non mostri nient'altro.
Quindi ho provato a utilizzare Thymeleaf. Thymeleaf segue lo standard XML che mi ha costretto a riscrivere gran parte del mio html per seguire i requisiti xml, e dopo che l'ho fatto è morto incontrando uno &&
all'interno di una direttiva ng-show. Quindi, nessuna fortuna con quello neanche.
Quindi ho provato Velocity. Ho avuto molta fortuna con la velocità fino ad ora. Serve benissimo i file html, non smette di incontrare errori di analisi e mi permette di mostrare viste parziali allo stesso modo di InternalResourceViewResolver. Tuttavia su di incontrare variabili angolari preceduti da $
Velocity tenta di analizzare loro come variabili VTL e riempie il mio log con messaggi come
velocity - Null reference [template 'clients/createOrEdit.html', line 1, column 65] : $invalid cannot be resolved.
Tutto continua a lavorare come dovrebbe, ma io non sono quello di lasciare solo gli errori siano e non ho trovato alcun modo di disabilitare VTL.
Questa è la mia attuale esperienza con i risolutori di vista.
Ho anche avuto l'idea di trattare i file .html come risorse statiche (che sono prima che angolare è magico) usando mvc:resources
ma senza alcun risolutore di vista la mia applicazione non è stata avviata anche se ho impostato il layout principale. html per essere il file di benvenuto in web.xml
La mia domanda è. Cosa dovrei usare come risolutore di viste in modo che giochi bene con angularjs e se dovessi usare anche i risolutori di vista?
EDIT: Sto cercando di utilizzare il ContentNegotiatingViewResolver
e ottengo:
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 in servlet dispatcher)
<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";
}
}
Grazie. Una domanda però. I tipi di media citano xml - application/xml. Ciò spiega anche i file html? – MrPlow
sì, è possibile utilizzare questo per html . ho aggiornato la mia risposta. Si prega di controllare –
vedo. Un'altra domanda. Dove cerca i file? Non sembra in grado di trovare le mie opinioni. Aggiornerò l'OP con la configurazione corrente – MrPlow