使用 Hibernate Spatial 访问 Spring NVC 的坐标 z 值
Accessing z-value of Coordinates for Spring NVC with Hibernate Spatial
我有一个正在构建的 Spring MVC 应用程序,它使用包含 3D 几何图形的 Oracle Spatial 数据库。我正在使用 Hibernate Spatial 来访问它,但由于我是 Spring 的新手(并且相对较新 Java),我发现很难访问我的视图的 z 坐标。代码如下:
Deposit.java
package com.example.project.model;
import com.vividsolutions.jts.geom.Point
import ...
@Entity
@Table(name="DEPOSITS")
public class Deposit {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "GEOM",updatable = false)
@Type(type="org.hibernate.spatial.GeometryType")
private Point geometry;
public Point getGeometry() {
return geometry;
}
}
DepositController.java
package com.example.project;
import ...
@Controller
public class DepositController {
private DepositService depositService;
@Autowired(required = true)
@Qualifier(value = "depositService")
public void setDepositService(DepositService ds) {
this.depositService = ds;
}
//Index
@RequestMapping(value = "/deposits", method = RequestMethod.GET)
public String listDeposits(Model model) {
model.addAttribute("listDeposits", this.depositService.listDeposits());
return "deposits/index";
}
}
deposits/index.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ page session="false" %>
<html>
<head>
<title>Deposits Page</title>
</head>
<body>
<c:if test="${!empty listDeposits}">
<table>
<tr>
<th>Deposit ID</th>
<th>Deposit Name</th>
<th>Longitude</th>
<th>Latitude</th>
<th>Height</th>
</tr>
<c:forEach items="${listDeposits}" var="deposit">
<tr>
<td>${deposit.id}</td>
<td>${deposit.name}</td>
<td>${deposit.geometry.x}</td>
<td>${deposit.geometry.y}</td>
<td>${deposit.geometry.coordinate.z}</td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
我知道 JTS 的 Point 类型不公开 z 坐标,它可以通过坐标对象访问。代码 deposit.getGeometry().getCoordinates().z
有效,如何让它适用于我的 .jsp 视图?
谢谢
我怀疑 ${deposit.geometry.x}
正在被重写为 deposit.getGeometry().getX()
并且 getX() 是 class 上存在的一个方法,所以它有效。
同样,${deposit.geometry.coordinate.z}
会被重写为deposit.getGeometry().getCoordinate().getZ()
,这不是一个存在的方法。
我只是将 X、Y 和 Z 的吸气剂添加到存款中 class,然后使用
${deposit.x}
${deposit.y}
${deposit.z}
我有一个正在构建的 Spring MVC 应用程序,它使用包含 3D 几何图形的 Oracle Spatial 数据库。我正在使用 Hibernate Spatial 来访问它,但由于我是 Spring 的新手(并且相对较新 Java),我发现很难访问我的视图的 z 坐标。代码如下:
Deposit.java
package com.example.project.model;
import com.vividsolutions.jts.geom.Point
import ...
@Entity
@Table(name="DEPOSITS")
public class Deposit {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "GEOM",updatable = false)
@Type(type="org.hibernate.spatial.GeometryType")
private Point geometry;
public Point getGeometry() {
return geometry;
}
}
DepositController.java
package com.example.project;
import ...
@Controller
public class DepositController {
private DepositService depositService;
@Autowired(required = true)
@Qualifier(value = "depositService")
public void setDepositService(DepositService ds) {
this.depositService = ds;
}
//Index
@RequestMapping(value = "/deposits", method = RequestMethod.GET)
public String listDeposits(Model model) {
model.addAttribute("listDeposits", this.depositService.listDeposits());
return "deposits/index";
}
}
deposits/index.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ page session="false" %>
<html>
<head>
<title>Deposits Page</title>
</head>
<body>
<c:if test="${!empty listDeposits}">
<table>
<tr>
<th>Deposit ID</th>
<th>Deposit Name</th>
<th>Longitude</th>
<th>Latitude</th>
<th>Height</th>
</tr>
<c:forEach items="${listDeposits}" var="deposit">
<tr>
<td>${deposit.id}</td>
<td>${deposit.name}</td>
<td>${deposit.geometry.x}</td>
<td>${deposit.geometry.y}</td>
<td>${deposit.geometry.coordinate.z}</td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
我知道 JTS 的 Point 类型不公开 z 坐标,它可以通过坐标对象访问。代码 deposit.getGeometry().getCoordinates().z
有效,如何让它适用于我的 .jsp 视图?
谢谢
我怀疑 ${deposit.geometry.x}
正在被重写为 deposit.getGeometry().getX()
并且 getX() 是 class 上存在的一个方法,所以它有效。
同样,${deposit.geometry.coordinate.z}
会被重写为deposit.getGeometry().getCoordinate().getZ()
,这不是一个存在的方法。
我只是将 X、Y 和 Z 的吸气剂添加到存款中 class,然后使用
${deposit.x}
${deposit.y}
${deposit.z}