Problem z bootstrap w aplikacji Spring

Problem z bootstrap w aplikacji Spring
Szymon Ciamaga
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 7 lat
  • Postów:15
0

Witam mam problem z stylami bootstrap w aplikacji springowej. Na niektórych podstronach style działają prawie dobrze tzn np inputy są ładnie wystylizowane ale za to siatka bootstrapa już nie działa, na niektórych podstronach menu też działa prawie dobrze ma odpowiedni kolor ale za to styl ułożenia już nie jest poprawny a są podstrony na których wcale nie ma żadnych styli ani menu ani zawartość podstrony. Główny szablon znajduje się w layout/default.html i ten plik wygląda tak.

Kopiuj
<!DOCTYPE html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4"
      xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
    <link type="text/css" href="css/bootstrap.min.css" rel="stylesheet" />
    <title>Default</title>
</head>
<body>
<nav class="navbar navbar-toggleable-md navbar-inverse fixed-top bg-inverse">
    <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
            data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false"
            aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>
    <a class="navbar-brand" href="/">superengine.pl</a>

    <div class="collapse navbar-collapse" id="navbarsMenu">
        <ul class="navbar-nav mr-auto">

            <li class="nav-item" sec:authorize="isAnonymous()">
                <a class="nav-link" href="/register">Register</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="/add/item/category" sec:authorize="isAuthenticated()">Add new item</a>
            </li>
            <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="http://example.com" id="category" data-toggle="dropdown"
                   aria-haspopup="true" aria-expanded="false">Category item</a>
                <div class="dropdown-menu" aria-labelledby="category">
                    <a class="dropdown-item" href="/list_item/car">Car</a>
                    <a class="dropdown-item" href="#">Motorcycle</a>
                    <a class="dropdown-item" href="#">Boat</a>
                </div>
            </li>
            <li class="nav-item" sec:authorize="isAuthenticated()">
                <a class="nav-link" href="/myaccount" >My account</a>
            </li>
        </ul>

        <div style="color: aliceblue" sec:authorize="isAuthenticated()">
            Hello  <b sec:authentication="name"/> role
            <span sec:authentication="authorities"/>
            -
            <form th:action="@{/logout}" method="post"
                  style="display: inline-block">
                <input type="submit" value="Logout"/>
            </form>
        </div>
    </div>
</nav>

<section layout:fragment="content">
    <p>Page content goes here</p>
</section>

<footer>
    <p>superengine.pl 2017 ©</p>
</footer>

<!--<script src="js/jquery.js"></script>-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>

</body>
</html>

Taką mam strukturę plików
https://zapodaj.net/33aacc8f22599.png.html

Template resolver

Kopiuj
	@Bean
	public ViewResolver viewResolver() {
		ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
		templateResolver.setTemplateMode("XHTML");
		templateResolver.setPrefix("views/");
		templateResolver.setSuffix(".html");

		SpringTemplateEngine engine = new SpringTemplateEngine();
		engine.setTemplateResolver(templateResolver);
		ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
		viewResolver.setTemplateEngine(engine);
		return viewResolver;
	}

a tu konfiguracja Spring Security

Kopiuj
  @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .formLogin()
                .loginPage("/")
                .defaultSuccessUrl("/myaccount")
                .and()
                .httpBasic()
                .and()
                .authorizeRequests()
                .antMatchers("css/**",
                        "/js/**",
                        "/img/**",
                        "/**/favicon.ico",
                        "/webjars/**",
                        "/signup/**",
                        "/signin/**",
                        "/list_item/**").permitAll()
                .and()
                .authorizeRequests()
                .antMatchers("/myaccount/**", "/add/**", "settings/**").authenticated()
                .and()
                .authorizeRequests()
                .antMatchers("/", "/register").anonymous()
                .and()
                .logout().permitAll().invalidateHttpSession(true).deleteCookies("JSESSIONID")
                .and()
                .rememberMe().key("secret-key").rememberMeParameter("remember-me").tokenValiditySeconds(3600)
                .and()
                .sessionManagement().maximumSessions(1).maxSessionsPreventsLogin(false).expiredUrl("/?logout")
                .sessionRegistry(sesionRegistry());
    }
edytowany 3x, ostatnio: Szymon Ciamaga
TM
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:2
0

Spróbuj wrzucić Bootstrap'a przez cdn, ostatnio miałem taki sam problem, że nie chciało załadować ze ścieżki a przy użyciu cdn poszło jak złoto.

jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
0

Używasz ścieżki względnej href="css/bootstrap.min.css", a powinieneś bezwględnej, ze slashem na początku.


Przeważnie ignoruję niezarejestrowanych użytkowników.
Szymon Ciamaga
Jest lepiej tzn wszędzie są widoczne style ale menu dalej jest nie takie jakie ma być i w sumie strona startowa też nie jest taka jak ma być ale style już są wszędzie
jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
0

Przejrzyj loga ze springa w trybie VERBOSE czy coś takiego i zobacz, jakie wywołania robi przeglądarka. Pewnie masz jakieś nieprawidłowe wywołania, których nie obsługuje serwer. Albo użyj HttpFoxa, albo Fiddlera do tego samego.


Przeważnie ignoruję niezarejestrowanych użytkowników.
edytowany 1x, ostatnio: jarekczek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.