2017-04-12 36 views
3

我使用Spring和Thymeleaf。有一些百葉窗片段用於包含在某些頁面中的側欄菜單。如果Spring MVC中包含特定的thymeleaf段,如何從數據庫加載數據

我的問題:

有什麼辦法來註冊,如果包含在主旋律段然後從數據庫中加載相關的數據,並將其添加到模型? (我在php Laravel 5中使用了類似的東西)

+0

對不起,我沒有理解完整的上下文。 可以請舉個例子或者給出詳細的解釋。 –

+0

如果我理解正確,你想檢查一些UI組件被加載,那麼只有你從數據庫加載數據,對吧? –

+0

你看過[LazyContextVariable] [1]嗎? http://www.thymeleaf.org/apidocs/thymeleaf/3.0.0.BETA03/org/thymeleaf/context/LazyContextVariable.html。看到Github的線程https://github.com/thymeleaf/thymeleaf/issues/101 –

回答

1

從數據庫中獲取數據並將其添加到控制器方法的模型中。然後在前端,檢查該值是否爲空。如果該值不爲空,則顯示該片段。例如:您在控制器設置的值是這樣的:

model.addAttribute("errors",this.DAOLayer.getItemsToShowOnAParticularFragment()); 

然後在前端側:

<c:if test="${errors != null}"> 
<div class="alert> 
<table class="table">         
<c:forEach items="${errors}" var="error"> 
<tr><td><c:out value="${error.defaultMessage}" /></td></tr> 
</c:forEach>               
</table> 
</div> 
</c:if> 

我這樣做對我的JSP。當錯誤爲空時,整個<div>不顯示。只有當錯誤不爲空時,纔會顯示<div>

您可以設置另一個if語句,如果錯誤爲空,則改爲顯示。

<c:if test="${errors == null}"> 
<!-- Since nothing came from DB, show this info in this fragment --> 

進一步解釋:

說,你有拋開你的前端的一部分,顯示從數據庫中的這些消息。我將以bootstrap爲例。說圓圈<div>是你分配給它的區域。

enter image description here

的前端代碼以產生這樣的佈局是這樣的(它包括所有的導入語句導入引導庫):

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <title>Bootstrap Example</title> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
</head> 
 
<body> 
 

 
<div class="jumbotron text-center"> 
 
    <h1>My First Bootstrap Page</h1> 
 
    <p>Resize this responsive page to see the effect!</p> 
 
</div> 
 
    
 
<div class="container"> 
 
    <div class="row"> 
 
    <div class="col-sm-4"> 
 
     <h3>Column 1</h3> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> 
 
     <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> 
 
    </div> 
 
    <div class="col-sm-4"> 
 
     <h3>Column 2</h3> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> 
 
     <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> 
 
    </div> 
 
    <!-- Start of circled div --> 
 
    <div class="col-sm-4"> 
 
     <h3>Column 3</h3>   
 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> 
 
     <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> 
 
    </div> 
 
    <!-- End of circled columns --> 
 
    </div> 
 
</div> 
 

 
</body> 
 
</html>

現在內部這最後<div class="col-sm-4"> ....,你會把這個<c:if test="${errors != null}"> JSTL代碼來測試顯示的內容用戶。我希望你知道如何在你的前端使用和導入JSTL標籤。如果沒有,那麼你可以谷歌它,你會發現很多答案。 就是這樣。

相關問題