Не удается использовать Bootstrap 5 в приложении Spring MVC с помощью webjar

#java #spring-mvc #webjars #spring5

Вопрос:

Привет, я пытаюсь добавить загрузочную загрузку в приложение Spring-MVC 5, работающее в контейнере Servlet 3.0 (Websphere 8.5).

Перед добавлением начальной загрузки в мое приложение. Конфигурация моего приложения и контроллер тестирования выглядят следующим образом:

  • Web.xml
 
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </context-param>

 
  • dispatcher-servlet.xml
 
    <context:component-scan base-package="com.lagatahk.controller" />
    
    <context:annotation-config /> 
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/views/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

 
  • helloworldController.java
 
    @Controller
    public class HelloWorldController {
        String message = "Welcome to Spring MVC5!";
         
        @RequestMapping("/index")
        public ModelAndView showIndex(
                @RequestParam(value = "name", required = false, defaultValue = "World") String name) {
            System.out.println("in /index controller");
            ModelAndView mv = new ModelAndView("index");
            mv.addObject("message", message);
            mv.addObject("name", "UserName");
            return mv;
        }

 

Исходный вид находится здесь

With this configuration, I added in pom.xml the webjars for bootstrap and jquery:

  • pom.xml
 
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>5.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.6.0</version>
        </dependency>

 
  • Added this line in my dispatcher-servlet.xml
 
<mvc:resources mapping="/webjars/**" location="/webjars/" />

 
  • Измените представление, index.jsp со ссылкой на таблицу стилей начальной загрузки
 
    <!DOCTYPE html>
    <html>
    <head>
    <script src="/webjars/jquery/3.6.0/jquery.min.js"></script>
    <script src="/webjars/bootstrap/5.1.0/js/bootstrap.min.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="stylesheet"
        href="/webjars/bootstrap/5.1.0/css/bootstrap.min.css" />
    <title>Spring 5 MVC - Index Page</title>
    </head>
    <body>
        <center>
            <h1>Welcome to this Spring 5 MVC Sample Project</h1>
            <p>This is a Spring 5 MVC Example App using apache maven webapp
                archieType. <br/>
            <ol>
                <li><a href="https://www.google.com">First
                        Reference</a></li>
            </ol>
            </p>
        </center>
        <div class="container">
            <br />
            <div class="alert alert-success">
                <a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
                <strong>Hi ${name}!</strong> It is working as we expected. Your
                message is ${message}
            </div>
        </div>
    </body>
    </html>

 

Однако после запуска моего приложения мои исходные контроллеры и представления, похоже, больше не работают. В журнале сервера приложений :

 
[8/15/21 22:57:48:062 CST] 0000009f PageNotFound  W 
org.springframework.web.servlet.DispatcherServlet noHandlerFound No mapping found for HTTP 
request with URI [/springlearnweb/index] in DispatcherServlet with name 'dispatcher'

 

Я пропустил какую-либо конфигурацию? Пожалуйста, помогите !

Комментарии:

1. 1. Удалите <context:annotation-config /> уже подразумеваемое <context:component-scan /> . 2. добавьте <mvc:annotation-driven /> , 3 добавьте свой <mvc:resources .. тег. 4. убедитесь mvc , что пространство имен сопоставлено! (это не ясно из вашего кода, так как заголовок xml-файла отсутствует).