如何在另一个 html 页面中访问 spring 模型的数据?
How to access data of spring model in another html page?
PlaceController.java
@GetMapping("/places")
public String listPlaces(Model model, HttpSession session) {
//keys and values , access this key using thymeleaf syntax ${listPlaces}
model.addAttribute("listPlaces", placeService.getAllPlaces());
return "place/places";
}
我需要获取从 places.html 到 index.html 的 listPlaces 数据 我尝试创建会话,但我无法从索引页调用它
<tbody>
<tr th:each="place: ${listPlaces}" >
<td th:text="${place.place_id}">Place Id</td>
<td th:text="${place.name}">Place Name</td>
<td th:text="${place.city_name}">City Name</td>
<td th:text="${place.description}">Place Description</td>
<td th:text="${place.longitude}">Place Longitude</td>
<td th:text="${place.latitude}">Place Latitude</td>
<td><img th:src="${'data:image/png;charset=utf-8;base64,' + place.byteToString(place.image)}" height="150px" width="150px" alt="img"></td>
<td th:text="${place.category}">Place Category</td>
<td>
<a th:href="@{/places/edit/{id}(id=${place.place_id})}" class="btn btn-primary">Update</a>
<a th:href="@{/places/{id}(id=${place.place_id})}" class="btn btn-danger">Delete</a>
</td>
</tr>
</tbody>
</table>
我认为你在问两件事。
- 如何return两个端点的相同位置?
- 如何将 table 重复用于我的所有地点?
第一个问题的答案是有一个 IndexController,它以与 PlaceController 相同的方式填充模型。您可以创建一个 CommonAttributesService,它可以提供一种方法来填充公共属性,如下所示:
@Service
public class CommonAttributesService
{
private PlaceService placeService;
public CommonAttributesService(PlaceService placeService)
{
this.placeService = placeService;
}
public void fillCommonAttributes(Model model)
{
model.addAttribute("listPlaces", placeService.getAllPlaces());
}
}
这样,您就不需要重复逻辑了。
第二个问题的答案是使用thymeleaf templates.
我在控制器中添加了一个带有 listPlaces 的模型属性 index.html
@RequestMapping("/index")
public String index(Model model) {
model.addAttribute("listP", placeService.getAllPlaces());
return "index";
}
然后我在index.html
中使用
<script th:inline="javascript">
/*<![CDATA[*/
// Initialize and add the map
function initMap() {
var places = [[${listP}]];
</script>
感谢 boris-ivanov
PlaceController.java
@GetMapping("/places")
public String listPlaces(Model model, HttpSession session) {
//keys and values , access this key using thymeleaf syntax ${listPlaces}
model.addAttribute("listPlaces", placeService.getAllPlaces());
return "place/places";
}
我需要获取从 places.html 到 index.html 的 listPlaces 数据 我尝试创建会话,但我无法从索引页调用它
<tbody>
<tr th:each="place: ${listPlaces}" >
<td th:text="${place.place_id}">Place Id</td>
<td th:text="${place.name}">Place Name</td>
<td th:text="${place.city_name}">City Name</td>
<td th:text="${place.description}">Place Description</td>
<td th:text="${place.longitude}">Place Longitude</td>
<td th:text="${place.latitude}">Place Latitude</td>
<td><img th:src="${'data:image/png;charset=utf-8;base64,' + place.byteToString(place.image)}" height="150px" width="150px" alt="img"></td>
<td th:text="${place.category}">Place Category</td>
<td>
<a th:href="@{/places/edit/{id}(id=${place.place_id})}" class="btn btn-primary">Update</a>
<a th:href="@{/places/{id}(id=${place.place_id})}" class="btn btn-danger">Delete</a>
</td>
</tr>
</tbody>
</table>
我认为你在问两件事。
- 如何return两个端点的相同位置?
- 如何将 table 重复用于我的所有地点?
第一个问题的答案是有一个 IndexController,它以与 PlaceController 相同的方式填充模型。您可以创建一个 CommonAttributesService,它可以提供一种方法来填充公共属性,如下所示:
@Service
public class CommonAttributesService
{
private PlaceService placeService;
public CommonAttributesService(PlaceService placeService)
{
this.placeService = placeService;
}
public void fillCommonAttributes(Model model)
{
model.addAttribute("listPlaces", placeService.getAllPlaces());
}
}
这样,您就不需要重复逻辑了。
第二个问题的答案是使用thymeleaf templates.
我在控制器中添加了一个带有 listPlaces 的模型属性 index.html
@RequestMapping("/index")
public String index(Model model) {
model.addAttribute("listP", placeService.getAllPlaces());
return "index";
}
然后我在index.html
中使用<script th:inline="javascript">
/*<![CDATA[*/
// Initialize and add the map
function initMap() {
var places = [[${listP}]];
</script>
感谢 boris-ivanov