2016-08-12 173 views
0

我正在開發一個使用Spring框架和Gradle作爲構建工具的Web應用程序。我使用Thymeleaf作爲前端模板引擎。我爲我的登錄頁面的代碼如下所示: -Thymeleaf模板無法正確解析我的HTML 5頁面

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" 
    xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> 
<head> 
<meta charset="utf-8"/> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"/> 

<meta name="viewport" content="width=device-width, initial-scale=1.0"/> 
<meta name="description" content="Bootstrap"/> 
<meta name="author" content=""/> 

<title>Login</title> 

<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Arimo:400,700,400italic"/> 
<link rel="stylesheet" href="assets/css/fonts/linecons/css/linecons.css" th:href="@{assets/css/fonts/linecons/css/linecons.css}"/> 
<link rel="stylesheet" href="assets/css/fonts/fontawesome/css/font-awesome.min.css" th:href="@{assets/css/fonts/fontawesome/css/font-awesome.min.css}"/> 
<link rel="stylesheet" href="assets/css/bootstrap.css" th:href="@{assets/css/bootstrap.css}"/> 
<link rel="stylesheet" href="assets/css/xenon-core.css" th:href="@{assets/css/xenon-core.css}"/> 
<link rel="stylesheet" href="assets/css/xenon-forms.css" th:href="@{assets/css/xenon-forms.css}"/> 
<link rel="stylesheet" href="assets/css/xenon-components.css" th:href="@{assets/css/xenon-components.css}"/> 
<link rel="stylesheet" href="assets/css/xenon-skins.css" th:href="@{assets/css/xenon-skins.css}"/> 
<link rel="stylesheet" href="assets/css/custom.css" th:href="@{assets/css/custom.css}"/> 

<script th:src="@{assets/js/jquery-1.11.1.min.js}" src="assets/js/jquery-1.11.1.min.js"></script> 

<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> 
<!--[if lt IE 9]> 
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js" th:src="@{https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js}"></script> 
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js" th:src="@{https://oss.maxcdn.com/respond/1.4.2/respond.min.js}"></script> 
<![endif]--> 


</head> 
<body class="page-body login-page login-light"> 
<div class="login-container"> 

    <div class="row"> 

     <div class="col-sm-6"> 

      <script type="text/javascript"> 
       jQuery(document).ready(function($) 
       { 
        // Reveal Login form 
        setTimeout(function(){ $(".fade-in-effect").addClass('in'); }, 1); 


        // Validation and Ajax action 
        $("form#login").validate({ 
         rules: { 
          username: { 
           required: true 
          }, 

          passwd: { 
           required: true 
          } 
         }, 

         messages: { 
          username: { 
           required: 'Please enter your username.' 
          }, 

          passwd: { 
           required: 'Please enter your password.' 
          } 
         }, 

         // Form Processing via AJAX 
         submitHandler: function(form) 
         { 
          show_loading_bar(70); // Fill progress bar to 70% (just a given value) 

          var opts = { 
           "closeButton": true, 
           "debug": false, 
           "positionClass": "toast-top-full-width", 
           "onclick": null, 
           "showDuration": "300", 
           "hideDuration": "1000", 
           "timeOut": "5000", 
           "extendedTimeOut": "1000", 
           "showEasing": "swing", 
           "hideEasing": "linear", 
           "showMethod": "fadeIn", 
           "hideMethod": "fadeOut" 
          }; 

          $.ajax({ 
           url: "data/login-check.php", 
           method: 'POST', 
           dataType: 'json', 
           data: { 
            do_login: true, 
            username: $(form).find('#username').val(), 
            passwd: $(form).find('#passwd').val(), 
           }, 
           success: function(resp) 
           { 
            show_loading_bar({ 
             delay: .5, 
             pct: 100, 
             finish: function(){ 

              // Redirect after successful login page (when progress bar reaches 100%) 
              if(resp.accessGranted) 
              { 
               window.location.href = 'dashboard-2.html'; 
              } 
             } 
            }); 


            // Remove any alert 
            $(".errors-container .alert").slideUp('fast'); 


            // Show errors 
            if(resp.accessGranted == false) 
            { 
             $(".errors-container").html('<div class="alert alert-danger">\ 
              <button type="button" class="close" data-dismiss="alert">\ 
               <span aria-hidden="true">&times;</span>\ 
               <span class="sr-only">Close</span>\ 
              </button>\ 
              ' + resp.errors + '\ 
             </div>'); 


             $(".errors-container .alert").hide().slideDown(); 
             $(form).find('#passwd').select(); 
            } 
           } 
          }); 

         } 
        }); 

        // Set Form focus 
        $("form#login .form-group:has(.form-control):first .form-control").focus(); 
       }); 
      </script> 

      <!-- Errors container --> 
      <div class="errors-container"> 

      </div> 

      <div th:if="${param.error}"> 
       Invalid username and password. 
      </div> 
      <div th:if="${param.logout}"> 
       You have been logged out. 
      </div> 

      <!-- Add class "fade-in-effect" for login form effect --> 
      <form th:action="@{/extra-login-light}" method="post" role="form" id="login" class="login-form fade-in-effect" autocomplete="on"> 

       <div class="login-header"> 
        <a href="dashboard-2.html" th:href="@{/dashboard-2.html}"> 
         <img th:src="@{assets/images/white.jpg}" src="assets/images/white.jpg" alt="" height="" width="180" class="logo"/> 
         <img th:src="@{assets/images/xm_lockup.png}" src="assets/images/xm_lockup.png" alt="" height="45" width="220" class="logonew"/> 
        </a> 

        <p>Dear user, log in to access the admin area!</p> 
       </div> 


       <div class="form-group"> 
        <label class="control-label" for="username">Username</label> 
        <input type="text" class="form-control" name="username" id="username" autocomplete="off"/> 
       </div> 

       <div class="form-group"> 
        <label class="control-label" for="passwd">Password</label> 
        <input type="password" class="form-control" name="password" id="passwd" autocomplete="off"/> 
       </div> 

       <div class="form-group"> 
        <button type="submit" class="btn btn-primary btn-block text-left"> 
         <i class="fa-lock"></i> 
         Log In 
        </button> 
       </div> 

       <div class="login-footer"> 
        <a href="#">Forgot your password?</a> 

        <div class="info-links"> 
         <a href="#">ToS</a> - 
         <a href="#">Privacy Policy</a> 
        </div> 

       </div> 

      </form> 

      <!-- Facebook Login 
      <div class="external-login"> 
       <a href="#" class="facebook"> 
        <i class="fa-facebook"></i> 
        Facebook Login 
       </a> 
       --> 

       <!-- 
       <a href="<?php _hash(); ?>" class="twitter"> 
        <i class="fa-twitter"></i> 
        Login with Twitter 
       </a> 

       <a href="<?php _hash(); ?>" class="gplus"> 
        <i class="fa-google-plus"></i> 
        Login with Google Plus 
       </a> 
       --> 
     </div> 

    </div> 

</div> 

<!-- Bottom Scripts --> 
<script src="assets/js/bootstrap.min.js"></script> 
<script src="assets/js/TweenMax.min.js"></script> 
<script src="assets/js/resizeable.js"></script> 
<script src="assets/js/joinable.js"></script> 
<script src="assets/js/xenon-api.js"></script> 
<script src="assets/js/xenon-toggles.js"></script> 
<script src="assets/js/jquery-validate/jquery.validate.min.js"></script> 
<script src="assets/js/toastr/toastr.min.js"></script> 


<!-- JavaScripts initializations and stuff --> 
<script src="assets/js/xenon-custom.js"></script> 

</body> 
</html> 

我成功運行的代碼,但是CSS文件,圖像和腳本無法在網頁上加載,因此它看起來像一個普通的頁面只有一種形式。該頁面現在看起來像這樣Page without any CSS。我認爲這是百里香的一個問題。我做了什麼錯事?請仔細閱讀代碼並糾正錯誤。

項目結構現在看起來像這樣: - Project structure

+0

入住瀏覽器的開發者工具被加載。如果沒有,它可能是不好的路線:th:href =「@ {assets/css/custom.css}」 – yami

+0

我照你說的做了。但結果是一樣的。我現在通過將css文件重定位到靜態文件夾來更改項目結構。我將靜態文件夾作爲根目錄。我附上了一張現在如何顯示結構的照片。請仔細閱讀它和代碼,並讓我知道他們中的錯誤。 – APJ

回答

1

入住瀏覽器的開發者工具,如果CSS加載。如果沒有也可以是壞的路徑:

th:href="@{assets/css/custom.css}" 

試一下:

<link th:href="@{/css/fileName.css}" rel="stylesheet" media="screen" /> 

和文件應位於:如果`CSS`

\your_project\src\main\resources\static\css\fileName.css