Эквивалент web.xmlдля Spring Boot MVC? - PullRequest
7 голосов
/ 19 мая 2019

Спецификация JSP позволяет мне обслуживать .html файлы в качестве JSP (то есть, чтобы контейнер обрабатывал их как файлы JSP), используя секцию <jsp-config> в web.xml, например ::100100

<web-app …>
  <jsp-config>
    <jsp-property-group>
      <url-pattern>*.html</url-pattern>
    </jsp-property-group>
  </jsp-config>
</web-app>

Но когда я переключаюсь на запуск @SpringBootApplication со встроенным Tomcat, он полностью обходит файл web.xml. Существует ли в Spring Boot MVC эквивалентный параметр для настройки конфигурации JSP группы свойств JSP в соответствии со стандартом web.xml, который будет настраивать существующий встроенный сервлет Tomcat JSP?

(Другой пример настройки JSP, который я мог бы настроить, - <trim-directive-whitespaces>.)

Прежде чем пометить это как дубликат , пожалуйста, прочтите это внимательно. Мне известен расширенный ответ от walkeros . Но этот ответ касается только добавления нового JSP-сервлета. Он не касается добавления новой группы свойств JSP в существующий JSP-сервлет, и, действительно, вообще не упоминает раздел <jsp-config> в web.xml.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Вы можете найти способ заставить Spring Boot работать с конфигурациями XML, но это не так, как должно быть. Чтобы применить специальные конфигурации JSP к вашему приложению, вы можете сделать это следующим образом:

  • Создайте класс конфигурации JSP, который реализует JspConfigDescriptor , например:
public class MyJspConfigDescriptor implements JspConfigDescriptor {

    private Collection<JspPropertyGroupDescriptor> jspPropertyGroups =
            new LinkedHashSet<JspPropertyGroupDescriptor>();

    private Collection<TaglibDescriptor> taglibs =
            new HashSet<TaglibDescriptor>();

    @Override
    public Collection<JspPropertyGroupDescriptor> getJspPropertyGroups() {
        JspPropertyGroup newPropertyGroup = new JspPropertyGroup();
        newPropertyGroup.addUrlPattern("*.html");
        // You can add more configurations as you wish!
        JspPropertyGroupDescriptorImpl jspDescriptor = new JspPropertyGroupDescriptorImpl(newPropertyGroup);
        jspPropertyGroups.add(jspDescriptor);
        return jspPropertyGroups;
    }

    @Override
    public Collection<TaglibDescriptor> getTaglibs() {
        return taglibs;
    }

}
  • Сообщите вашему SpringBootServletInitializer о наличии новых конфигураций, которые вы хотели бы добавить, вы можете сделать это, переопределив метод onStartup и добавив их туда:
@Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        super.onStartup(servletContext);
        servletContext.getJspConfigDescriptor().getJspPropertyGroups().addAll((new MyJspConfigDescriptor()).getJspPropertyGroups());
    }

Я верю, что это сработает, но я действительно не проверял это!

0 голосов
/ 22 мая 2019

Обновленный ответ:

spring-boot-starter-web не зависит от web.xml, поэтому вы не можете использовать оба в комбинации.Существует способ использования web.xml с Spring Boot, так называемый «традиционный» способ ведения дел, примером которого является в этом примере проекта .Кажется, вы просто используете spring-boot-starter вместе с jsp / web framework (Spring MVC в примере проекта) и используете web.xml для конфигурации сервлета.

Оригинальный ответ, относящийся к spring-boot-starter-web (сделалне работает для .html -файлов):

Чтобы настроить внешний вид загрузочных файлов Spring для представлений, используйте эти свойства в application.properties:

spring.mvc.view.prefix: /WEB-INF/views/
spring.mvc.view.suffix: .html

Чтобы просмотреть все свойства, поддерживаемыеSpring Boot, см. эту ссылку .Перейдите к SPRING MVC, чтобы найти подходящие для этого случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...