Весна MVC 4 с XHTML?
Я прочитал руководство Spring MVC 4: http://docs.spring.io/spring-security/site/docs/4.0.x/guides/html5/form.html
И в этом руководстве он использует html (pure) с thymeleaf:
<html xmlns:th="http://www.thymeleaf.org" xmlns:tiles="http://www.thymeleaf.org">
<head>
<title tiles:fragment="title">Messages : Create</title>
</head>
<body>
<div tiles:fragment="content">
<form name="f" th:action="@{/login}" method="post">
<fieldset>
<legend>Please Login</legend>
<div th:if="${param.error}" class="alert alert-error">
Invalid username and password.
</div>
<div th:if="${param.logout}" class="alert alert-success">
You have been logged out.
</div>
<label for="username">Username</label>
<input type="text" id="username" name="username"/>
<label for="password">Password</label>
<input type="password" id="password" name="password"/>
<div class="form-actions">
<button type="submit" class="btn">Log in</button>
</div>
</fieldset>
</form>
</div>
</body>
</html>
Но если я попытаюсь использовать этот html-код в своем проекте, браузер будет показан: "Этот XML-файл, по-видимому, не имеет никакой информации о стиле, связанной с ним. Дерево документов показано ниже."
Почему?
Я использую Spring MVC 4 С Java Конфигурация:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.make3.mymed")
public class AppWebConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".xhtml");
return resolver;
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
}
AbstractAnnotationConfigDispatcherservletinitializer:
public class SpringMVCServlet extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { JPAConfiguration.class, SecurityConfiguration.class, AppWebConfiguration.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
1 ответ:
Вы служили странице как XHTML, но ваши элементы не находятся в http://www.w3.org/1999/xhtml , поэтому браузер не распознает элементы как HTML-элементы с одинаковым локальным именем.
Поскольку они не являются HTML-элементами, они не стилизуются в соответствии с правилами HTML, и поскольку вы не предоставили никакого другого стиля, единственное, что остается браузеру, - это применить стиль по умолчанию для XML-документов, который представляет собой визуализацию документа. дерево.
Чтобы исправить, просто добавьте http://www.w3.org/1999/xhtml пространство имен как пространство имен по умолчанию для вашего элемента
<html>
. то есть<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:tiles="http://www.thymeleaf.org">