我使用Spring和Thymeleaf。有一些百葉窗片段用於包含在某些頁面中的側欄菜單。如果Spring MVC中包含特定的thymeleaf段,如何從數據庫加載數據
我的問題:
有什麼辦法來註冊,如果包含在主旋律段然後從數據庫中加載相關的數據,並將其添加到模型? (我在php Laravel 5中使用了類似的東西)
我使用Spring和Thymeleaf。有一些百葉窗片段用於包含在某些頁面中的側欄菜單。如果Spring MVC中包含特定的thymeleaf段,如何從數據庫加載數據
我的問題:
有什麼辦法來註冊,如果包含在主旋律段然後從數據庫中加載相關的數據,並將其添加到模型? (我在php Laravel 5中使用了類似的東西)
從數據庫中獲取數據並將其添加到控制器方法的模型中。然後在前端,檢查該值是否爲空。如果該值不爲空,則顯示該片段。例如:您在控制器設置的值是這樣的:
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>
是你分配給它的區域。
的前端代碼以產生這樣的佈局是這樣的(它包括所有的導入語句導入引導庫):
<!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標籤。如果沒有,那麼你可以谷歌它,你會發現很多答案。 就是這樣。
對不起,我沒有理解完整的上下文。 可以請舉個例子或者給出詳細的解釋。 –
如果我理解正確,你想檢查一些UI組件被加載,那麼只有你從數據庫加載數據,對吧? –
你看過[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 –