Java / Spring / Hibernate / CXF / MySQL SOAP webservice和相应的Web Spring MVC客户端。
webservice后面的表格像往常一样设置为AUTO INCREMENT。
映射到表的实体POJO
@Id @GeneratedValue
@Column(name="id", unique=true, nullable=false)
@XmlElement(name="id")
private long id;
webclient中的模型POJO
private long id;
updateInsert.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="joda" uri="http://www.joda.org/joda/time/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<style>
.error {
color: #ff0000;
}
</style>
<head>
<title>Form Template Insert Page</title>
</head>
<body>
<h1>Form Template Insert page</h1>
<form:form modelAttribute="formTemplateInsertUpdateForm" method="post">
<!-- <form:errors path="*" cssClass="errorblock" element="div" /> -->
<table>
<tr>
<td><form:label path="id"> id: </form:label></td>
<td><form:input path="id" /></td>
<td><form:errors path="id" cssClass="error" /></td>
</tr>
<tr>
<td><form:label path="name"> name: </form:label></td>
<td><form:input path="name" /></td>
<td><form:errors path="name" cssClass="error" /></td>
</tr>
<tr>
<td><form:label path="revision"> revision: </form:label></td>
<td><form:input path="revision" /></td>
<td><form:errors path="revision" cssClass="error" /></td>
</tr>
<tr>
<td><form:label path="form"> form: </form:label></td>
<td><form:input path="form" /></td>
<td><form:errors path="form" cssClass="error" /></td>
</tr>
<tr>
<td><input type="submit" value="Insert" /></td>
<input value="Insert" name="insert" type="submit" id="btnInsert" class="submit_button">
<input value="Update" name="update" type="submit" id="btnUpdate" class="submit_button">
<input value="Delete" name="delete" type="submit" id="btnDelete" class="submit_button">
<input value="Cancel" name="cancel" type="submit" id="btnCancel" class="submit_button">
</tr>
</table>
</form:form>
<br><strong><c:out value="${aMsg}" /></strong><br>
</body>
</html>
我想使用一个Model来插入,更新或删除实体Java实例/表行。
该行的id仅在之后知道该对象被提交/刷新,就像在DaoImpl中的此片段中一样:
public FormTemplate insert( FormTemplate formTemplate)
{
logger.debug("entering");
em.getTransaction().begin();
em.persist(formTemplate);
em.getTransaction().commit();
logger.debug("exiting ");
return formTemplate;
}
问题:首次打开insertUpdate.jsp时,id的默认值为0.因此,插入表失败,因为指定了id值。
我可以简单地将Model POJO中的id类型设置为Long而不是long,并将default设置为null吗?这听起来很容易。
或者我必须有一个单独的Insert和UpdateDelete模型POJO和相应的jsps,后者有一个id字段而前者没有?
更大的问题:控制器的get方法是否可以控制jsp中定义的字段的可见性?示例:调用myWebClient / formTemplate / insert会打开insertUpdate.jsp,但不显示id字段?
TIA,
Still-learning Stev
答案 0 :(得分:0)
long
是原始的,永远不会是null
。试试Long
课程。