在Spring 4中提交表单时出现错误的请求错误

时间:2018-05-12 05:44:35

标签: spring spring-mvc

我在提交表单时遇到400错误请求错误。

我正在使用spring 4.0.6版本。我不知道为什么会这样。请看下面的错误我得到了什么。

enter image description here

这是我的JSP

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

<html>
<head>
	
	<script src="<c:url value='/static/js/jquery-3.3.1.js' />"></script>
	<script src="<c:url value='/static/js/bootstrap.min.js' />"></script>
    <script src="<c:url value='/static/js/jquery.validate.min.js' />"></script>
    <script src="<c:url value='/static/js/additional-methods.min.js' />"></script>
    <script src="<c:url value='/static/js/jquery.mask.js' />"></script>
    <script src="<c:url value='/static/js/jquery-ui.js' />"></script>
    
	<link href="<c:url value='/static/css/bootstrap.min.css' />" rel="stylesheet"></link>
    <link href="<c:url value='/static/css/jquery-ui.css' />" rel="stylesheet"></link>
    
	<style>
	.head-color {
    background: rgb(243, 246, 234);
    color: #800000;
    text-align:center;
   }
 .date-width{
    width:25% !important;
 }
 .error{
 color:red;
 }
	</style>
	<script type="text/javascript">
    $(function() {
    	
    	document.getElementById("claimFilingForm").reset();
    	
        $('.phone-us').mask('(000) 000-0000');
        $('.zip-code').mask('00000-0000');
        
        $( "#phoneAssignedDate" ).datepicker();

        jQuery.validator.addMethod("valueNotEquals", function(value, element, arg){
            return arg !== value;
        }, "This field is required.");
        
        jQuery.validator.setDefaults({
            debug: true,
            success: "valid"
        });

        $( "#claimFilingForm" ).validate({
            rules: {
            	firstName: {
            		required: true
                },
                lastName: {
                    required: true
                },
                address: {
                	required: true
                },
                city: {
                    required: true
                },
                state: {
                	required: true
                   // valueNotEquals: "default"
                },
                nickname: {
                	required: true
                },
                zip: {
                    required: true,
                    zipcodeUS: true
                },
                phone: {
                    required: true,
                    phoneUS: true
                },
                email: {
                    required: true,
                    email: true
                },
                optradio: {
                    required: true               	
                },
                phoneAssignedDate: {
                	required: {
            				depends: function() {
            					return $('input[name="optradio"]:checked').val() == 'N';
            				}
            			}
                	},
                signature: {
                	required: true
                }
            },
            messages: {

            },
            errorPlacement: function(error, element) {
                var placement = $(element).data('error');
                if (placement) {
                    $(element).css("display","");
                    $(placement).append(error);
                } else {
                    error.insertAfter(element);
                }
            },
            submitHandler: function(form) {
                if ($(form).valid())
                {
                    form.submit();
                }
                return false; // prevent normal form posting
            }
        })
        
        });
    
	</script>
</head>
<body>
<div class="container">
    <h2 class="well head-color">CLAIM FILING</h2>
    	<div class="form-group">
			<span style="font-weight: bold; color: #875a24;">This is a claim in connection with a class of persons 
			who were successfully sent unsolicited Pollo Trophical Commercial text messages on 
			what are commonly called recycled numbers between March 1, 2012 and March 15, 2017</span>
	    </div>
	<div class="col-lg-12 well">
	<div class="row">
				<form:form id="claimFilingForm" modelAttribute="claimant" method="POST" action="claimFiling">
					<div class="col-sm-12">
					<div class="form-group">
						<span style="font-weight: bold;">1. You Must Provide Your Contact Information, including any nicknames or 
						aliases or any name you use to obtain mobile telephone service for you or your 
						family members</span>
					</div>
						<div class="row">
							<div class="col-sm-6 form-group">
								<label>First Name</label>
								<form:input type="text" id="firstName" name="firstName" path="firstName" placeholder="Enter First Name" class="form-control" autofocus=""/>
							</div>
							<div class="col-sm-6 form-group">
								<label>Last Name</label>
								<form:input type="text" id="lastName" name="lastName" path="lastName" placeholder="Enter Last Name" class="form-control"/>
							</div>
						</div>					
						<div class="form-group">
							<label>Address</label>
							<form:textarea placeholder="Enter Address" id="address" name="address" path="address" rows="3" class="form-control"></form:textarea>
						</div>	
						<div class="row">
							<div class="col-sm-4 form-group">
								<label>City</label>
								<form:input type="text" id="city" name="city" path="city" placeholder="Enter City Name" class="form-control"/>
							</div>	
							<div class="col-sm-4 form-group">
								<label>State</label>
								<form:input type="text" id="state" name="state" path="state" placeholder="Enter State Name" class="form-control"/>
							</div>	
							<div class="col-sm-4 form-group">
								<label>Zip</label>
								<form:input type="text" id="zip" name="zip" path="zip" placeholder="Enter Zip5-Zip4 Code" class="form-control zip-code"/>
							</div>		
						</div>
						<div class="row">
							<div class="col-sm-6 form-group">
								<label>Company/Nickname/Alias</label>
								<form:input type="text" id="nickname" name="nickname" path="nickname" placeholder="Enter Company/Nickname/Alias" class="form-control"/>
							</div>		
							<div class="col-sm-6 form-group">
								<label>Phone Number</label>
								<form:input type="text" id="phone" name="phone" path="phone" placeholder="Enter Phone Number" class="form-control phone-us"/>
							</div>	
						</div>		
											
					<div class="form-group">
						<label>Email Address</label>
						<form:input type="text" id="email" name="email" path="email" placeholder="Enter Email Address" class="form-control"/>
					</div>
					
					<div class="form-group">
					<br/><br/>
						<span style="font-weight: bold;">2. You Must Verify Ownership of the Number Listed Above please select one</span>
					</div>	
					
					<div class="form-group radio">
						<label><form:radiobutton id="optradio1" name="optradio" path="optradio" value="N" data-error="#optradio-error"/>The telephone number listed above was assigned 
						to me as of below mentioned date
						and I did not consent to receive Pollo Trophical advertising text messages
						<form:input type="text" id="phoneAssignedDate" name="phoneAssignedDate" placeholder="Select a Date" path="phoneAssignedDate" class="form-control date-width" style="cursor: pointer;" readonly="true"/></label>
					</div>
                     <br/>
					<div class="form-group radio">
						<label><form:radiobutton id="optradio2" name="optradio" path="optradio" value="Y" />The number listed above was assigned to me and I consented to receive texts from Pollo Trophical</label>
					</div>
                    <div class="form-group">
					    <span id="optradio-error" class="text-danger align-middle error">
                            <!-- Put name validation error messages here -->
                        </span>
					</div>
					<div class="form-group">
						<label>Signature</label>
						<form:input type="text" id="signature" name="signature" path="signature" placeholder="Enter Your Name" class="form-control"/>
					</div>
					
					<button type="submit" class="btn btn-lg btn-info">Submit</button>					
					</div>
				</form:form> 
				</div>
	</div>
	
	</div>
	</body>
	</html>

这是我的控制器

package com.application.controller;



import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.application.model.Claimant;

import com.application.service.ClaimFilingService;

@Controller
@RequestMapping("/")
public class ClaimFilingController {

	@Autowired
	private ClaimFilingService claimFilingService;
	
	@RequestMapping(value = { "/" }, method = RequestMethod.GET)
	public String home(ModelMap model) {
		return "redirect:/claimFiling";
	}
	/*
	 * This method will serve as default GET handler.
	 */
	@RequestMapping(value = { "/claimFiling" }, method = RequestMethod.GET)
	public String newRegistration(ModelMap model, HttpServletRequest request) {
		Claimant claimant = new Claimant();
		model.addAttribute("claimant", claimant);
		return "claimFiling";
	}

	/*
	 * This method will be called on form submission, handling POST request It
	 * also validates the user input
	 */
	@RequestMapping(value = { "/claimFiling" }, method = RequestMethod.POST)
	public String saveRegistration(@ModelAttribute("claimant") Claimant claimant, ModelMap model, HttpServletRequest request) {

		String result = claimFilingService.insertClaimDetails(claimant, request);
		
		if(!result.equalsIgnoreCase("")) {
		model.addAttribute("ClaimId", result);	
		return "success";
		}
		
		model.addAttribute("message","Process Failed");
		return "claimFiling";
	}

}

这是我的Claimant模型类

package com.application.model;

import java.sql.Date;

public class Claimant {
   private String firstName;
   private String lastName;
   private String address;
   private String city;
   private String state;
   private String zip;
   private String nickname;
   private String phone;
   private String email;
   private String optradio;
   private Date phoneAssignedDate;
   private String signature;
public Claimant(String firstName, String lastName, String address, String city, String state, String zip,
		String nickname, String phone, String email, String optradio, Date phoneAssignedDate, String signature) {
	super();
	this.firstName = firstName;
	this.lastName = lastName;
	this.address = address;
	this.city = city;
	this.state = state;
	this.zip = zip;
	this.nickname = nickname;
	this.phone = phone;
	this.email = email;
	this.optradio = optradio;
	this.phoneAssignedDate = phoneAssignedDate;
	this.signature = signature;
}
public Claimant() {
	super();
	// TODO Auto-generated constructor stub
}
public String getFirstName() {
	return firstName;
}
public void setFirstName(String firstName) {
	this.firstName = firstName;
}
public String getLastName() {
	return lastName;
}
public void setLastName(String lastName) {
	this.lastName = lastName;
}
public String getAddress() {
	return address;
}
public void setAddress(String address) {
	this.address = address;
}
public String getCity() {
	return city;
}
public void setCity(String city) {
	this.city = city;
}
public String getState() {
	return state;
}
public void setState(String state) {
	this.state = state;
}
public String getZip() {
	return zip;
}
public void setZip(String zip) {
	this.zip = zip;
}
public String getNickname() {
	return nickname;
}
public void setNickname(String nickname) {
	this.nickname = nickname;
}
public String getPhone() {
	return phone;
}
public void setPhone(String phone) {
	this.phone = phone;
}
public String getEmail() {
	return email;
}
public void setEmail(String email) {
	this.email = email;
}
public String getOptradio() {
	return optradio;
}
public void setOptradio(String optradio) {
	this.optradio = optradio;
}
public Date getPhoneAssignedDate() {
	return phoneAssignedDate;
}
public void setPhoneAssignedDate(Date phoneAssignedDate) {
	this.phoneAssignedDate = phoneAssignedDate;
}
public String getSignature() {
	return signature;
}
public void setSignature(String signature) {
	this.signature = signature;
}
   
}

我是初学者,所以有些身体可以帮助我找出问题。

1 个答案:

答案 0 :(得分:0)

是的,我发现了错误。在POJO类中,我将 phoneAssignedDate 的类型更改为String。这解决了我的问题: - )