0

このモデルフォームでは、モデルオブジェクトとして機能する3つのフィールドdepartment_Id,department_Name,department_locationがあります。departmentForm

フィールドを検証するために注釈を使用しています。create.jspここで、異なるjsp page sayの2つのフィールドと、異なるjsppagesayの1つのフィールドのみを使用したいと思いますgetDepartmentById

の送信ボタンを押すとcreate.jsp、検証が行われていますが、正しい情報を提供した後、このページで送信されなかった原因が表示されます。

DAOレイヤーによって自動生成されるフィールドを1つ指定していません。department_Idcreate.jspだから、データベースに部門を正常に作成するために私のページを実行するためにこの値を拒否する方法を教えてください。

オブジェクトを印刷すると、次のBindingResultように表示されます。

Field error in object 'departmentForm' on field 'departmentId': rejected value [null]; 
codes [NotEmpty.departmentForm.departmentId,NotEmpty.departmentId,NotEmpty.java.lang.String,NotEmpty]; 
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: 
codes [departmentForm.departmentId,departmentId]; arguments []; 
default message [departmentId],org.hibernate.validator.constraints.NotEmpty.message},
[Ljava.lang.Class;@4fc4a198,[Ljava.lang.Class;@764d2b11]; 
default message [may not be empty]`

これは私がコントローラーでコーディングした方法です:

@RequestMapping(value = "/createDepartment", method = RequestMethod.POST)
public String createEmployee(@Valid DepartmentForm departmentForm,
        BindingResult bindingResult, Map<String, DepartmentForm> model)
        throws Exception {

    if (bindingResult.hasErrors()) {
        System.out.println(bindingResult);
        bindingResult.reject(departmentForm.getDepartmentId());
        return "departmentForm";
    }
    System.out.println("mr ankur jadiy");

    model.put("departmentForm", departmentForm);
    departmentForm.setUpdateStatus('A');
    if (departmentForm.getUpdateStatus() == 'A') {
        departmentServiceImpl
            .actionDecider(convertDeptFormToDeptBO(departmentForm));

    }
    return "Success";
}

私のDepartmentFormコードは次のとおりです。

package com.nousinfo.tutorial.model;

import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;

public class DepartmentForm {

    @NotEmpty
    @Size(min = 1, max = 20,message="")
    private String departmentId;
    @NotEmpty
    private String departmentName;

    private String departmentLocation;

    private Character updateStatus;
    public String getDepartmentId() {
        return departmentId;
    }

    public void setDepartmentId(String departmentId) {
        this.departmentId = departmentId;
    }

    public String getDepartmentName() {
        return departmentName;
    }

    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }

    public String getDepartmentLocation() {
        return departmentLocation;
    }

    public void setDepartmentLocation(String departmentLocation) {
        this.departmentLocation = departmentLocation;
    }

    public Character getUpdateStatus() {
        return updateStatus;
    }

    public void setUpdateStatus(Character updateStatus) {
        this.updateStatus = updateStatus;
    }
}

そして私create.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://jakarta.apache.org/taglibs/input-1.0" prefix="input"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Create Department</title>
<link rel="stylesheet" href="css/style.css" type="text/css"></link>
</head>

<body>

    <table width="1254" height="74" border="0" align="center">

        <tr>
            <td width="300" height="68" align="center" bgcolor="#99CCFF"><h2>
                    <span class="style1">Employee Details </span>
                </h2></td>
            <td width="100" height="68" align="center" bgcolor="#FFFFFF"><img
                src="./image/emps.jpg" width="190" height="92" /></td>
        </tr>
    </table>
    <p>
        <br />
    </p>
    <hr size="1" width="786">
    <form:form id="form" method="post" action="/EmployeeWebSpring/departmentController/createDepartment"
        modelAttribute="departmentForm">
        <table>
            <tr>
                <form:hidden path="updateStatus" />
            </tr>

            <tr>
                <td>
                    Department_Name:
                    <font color="red"><form:errors path="departmentName" /></font>
                </td>
            </tr>
            <tr>
                <td><form:input path="departmentName" /></td>
            </tr>

            <tr>
                <td>
                    Department_Location:
                    <font color="red"><form:errors path="departmentLocation" /></font>
                </td>
            </tr>
            <tr>
                <td><form:input path="departmentLocation" /></td>
            </tr>
        </table>

        <br>
        <br />
        <p>&nbsp;</p>
        <br>
        <tr>
            <td><input type="submit" name="method" value="save" /></td>
            <td><input type="submit" name="method" value="cancel" /></td>
        </tr>

        <hr size="1" width="786">
        <p>&nbsp;</p>
    </form:form>
</body>
</html>
4

1 に答える 1

0

エラーの内容は、の値が欠落していることです。departmentIdこれは、次のように定義したので驚くことではありません。

@NotEmpty
@Size(min = 1, max = 20,message="")

departmentIdコードによって自動生成されているかどうかを実際に検証する必要はありません。特にフォームにないため、おそらくから削除する DepartmentFormか、少なくともオプションにする必要があります。

ビジネスオブジェクトで必須にすることができますが、フォームバッキングオブジェクトはフォームの内容を反映する必要があります。

アップデート

departmentIdがデータベースで生成されたIDである場合は、コントローラーで許可されていないものとして設定する必要がありInitBinderます。

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.setDisallowedFields(new String[] { "departmentId" }); 
}
于 2013-01-11T09:24:56.823 に答える