Jsp 对键定义为AUTO_INCREMENT的表使用一种形式进行CRUD操作

Jsp 对键定义为AUTO_INCREMENT的表使用一种形式进行CRUD操作,jsp,spring-mvc,Jsp,Spring Mvc,Java/Spring/Hibernate/CXF/MySQL SOAP-webservice和相应的webspring-MVC客户端 和往常一样,webservice后面的表的id设置为自动递增 映射到表的实体POJO已 @Id @GeneratedValue @Column(name="id", unique=true, nullable=false) @XmlElement(name="id") private long id; webclient中的POJO模型具有 private l

Java/Spring/Hibernate/CXF/MySQL SOAP-webservice和相应的webspring-MVC客户端

和往常一样,webservice后面的表的id设置为自动递增

映射到表的实体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>
问题是:首次打开insertUpdate.jsp时,id的默认值为0。所以插入到表中当然会失败,因为为id指定了一个值

我可以简单地将模型POJO中的id类型设置为Long而不是Long,并将默认值设置为null吗?听起来很容易

或者我必须有一个单独的Insert和UpdateDelete模型POJO和相应的JSP,后者有一个id字段,而前者没有

更大的问题:控制器的get方法是否可以控制jsp中定义的字段的可见性?示例:调用myWebClient/formTemplate/insert会打开insertUpdate.jsp,但不会显示id字段

蒂亚


仍在学习的Stev

long
是一个基本元素,永远不能为
null
。尝试
Long

public FormTemplate insert( FormTemplate formTemplate)
{
    logger.debug("entering");

    em.getTransaction().begin();
    em.persist(formTemplate);
    em.getTransaction().commit();

    logger.debug("exiting ");

    return formTemplate;
}