2017-08-31 1 views
1

フォームを送信するときにエラーレスポンス400が表示されます。 DBからユーザーに性別を表示するドロップダウンリストを追加する前に、うまく動作していたフォームがあります。ドロップダウンはデータを正しく表示していますが、フォームを送信しているときにエラーが発生しています。これは、ドロップダウンリストを追加したときにのみ発生しました。フォームを送信すると、400のリクエストエラーが正しく表示されない

RegistrationController.java: -

@Controller 
public class RegistrationController { 
    final static Logger logger = Logger.getLogger(RegistrationController.class); 
    private StaffService staffService; 

    @Autowired 
    private GenderDao genderDao; 

    @Autowired 
    public RegistrationController(StaffService staffService) { 
     this.staffService = staffService; 
    } 

    @RequestMapping(method = RequestMethod.GET, value = "/register") 
    public String registerStaffPage(Model model) { 
     List<Gender> genders = genderDao.findAll(); 
     Iterator<Gender> genderIterators = genders.iterator(); 
     Map<Gender, String> genderMap = new LinkedHashMap<Gender, String>(); 
     while (genderIterators.hasNext()) { 
      Gender gender = genderIterators.next(); 
      genderMap.put(gender, gender.getGender()); 
     } 
     model.addAttribute("gendersMap",genderMap); 
     model.addAttribute("staffRegistrationBean", new StaffRegistrationBean()); 
     return "register"; 
    } 

    @RequestMapping(method = RequestMethod.POST, value = "/registerStaff") 
    public String registerStaff(@ModelAttribute("staffRegistrationBean") StaffRegistrationBean staffRegistrationBean, 
      @Valid StaffRegistrationBean staffRegistrationBeans, Errors errors, Model model) { 
     // if (errors.hasErrors()) 
     // return "register"; 
     staffService.createStaff(staffRegistrationBean); 
     return "RegistrationDone"; 
    } 

    @PostConstruct 
    public void init() { 
     logger.debug("RegistrationController Bean has been Initialized."); 
    } 

    @PreDestroy 
    public void destroy() { 
     logger.debug("RegistrationController Bean has been Destroyed."); 
    } 
} 

StaffRegistrationBean.java

public class StaffRegistrationBean { 
private String userName; 
    private String password; 
    private String firstName; 
    private String lastName; 
    private String email; 
    private String Organization; 
    private String phoneNo; 
    private Gender gender; 
    // getter and setter follows 
} 

regsiter.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ page isELIgnored="false"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Registration</title> 
</head> 
<body> 
    <h1>Registration Form</h1> 
    <form:form id="regForm" modelAttribute="staffRegistrationBean" 
     action="registerStaff" method="post"> 
     <table> 
      <tr> 
       <td><form:label path="userName" cssErrorClass="error"> 
         <spring:message code="userName" /> : 
        </form:label> <form:input path="userName" name="username" id="username" 
         cssErrorClass="error" /></td> 
      </tr> 
      <tr> 
       <td>Gender: <form:select path="gender"> 
         <form:options items="${gendersMap}" /> 
        </form:select> 
       </td> 
      </tr> 
      <tr> 
       <td><form:label path="organization" cssErrorClass="error"> 
         <spring:message code="organizationName" /> : 
        </form:label> <form:input path="organization" name="username" id="organization" 
         cssErrorClass="error" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="password" cssErrorClass="error"> 
         <spring:message code="password" /> : 
        </form:label> <form:input path="password" name="password" id="password" 
         cssErrorClass="error" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="firstName" cssErrorClass="error"> 
         <spring:message code="firstName" /> : 
        </form:label> <form:input path="firstName" name="firstname" id="firstname" 
         cssErrorClass="error" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="lastName" cssErrorClass="error"> 
         <spring:message code="lastName" /> : 
        </form:label> <form:input path="lastName" name="lastname" id="lastname" 
         cssErrorClass="error" /></td> 
      </tr> 
      <%-- <tr> 
       <td><form:label path="gender"> 
         <spring:message code="gender" /> : </form:label> 
       <td><form:select path="${gender}"> 
         <form:options items="${genderList}" id="id" itemValue="gender"> 
         </form:options> 
        </form:select></td> 
      </tr> --%> 
      <tr> 
       <td><form:label path="email" cssErrorClass="error"> 
         <spring:message code="email" /> : 
        </form:label> <form:input path="email" name="email" id="email" 
         cssErrorClass="error" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="phoneNo" cssErrorClass="error"> 
         <spring:message code="phoneNo" /> : 
        </form:label> <form:input path="phoneNo" name="phoneNo" id="phoneNo" 
         cssErrorClass="error" /></td> 
      </tr> 
      <tr> 
       <td></td> 
       <td><input type="submit" value="register"></td> 
      </tr> 
     </table> 
    </form:form> 
</body> 
</html> 

**

  • エラー: -

**

HTTPステータス400 - サーバーは、または処理しないことができない不正な要求

タイプステータスレポート

説明(例えば、不正なリクエスト構文、無効なリクエストメッセージのフレーミング、または欺瞞的なリクエストルーティング)。

GenderMapは、画面に表示するモデルを持つマップです。キーはジェンダークラスで、値はジェンダーの説明です。ユーザーは、性別表のIDを参照する性別を選択します。 8080/ExpenseCalculator/

すべてのヘルプは高く評価される登録: - URLにアクセスしhttps://github.com/iftekharkhan09/ExpenseCalculator_Nex_Gen/tree/DevBranch

- localhostの

全体のコードは、入手可能です。

+0

私はaction = "registerStaff"がメソッド –

+0

@ Ali.Mojtehedy Nopeを指していないと思います。間違ったURLは404を返しますが、OPは400を返します。 – BalusC

+0

Http 400が間違った要求ペイロードオブジェクトのために発生することがあります。あなたの場合はStaffregistrationbean。このクラスでは、タイプジェンダーのジェンダーを定義しますが、あなたのJSPでStringを送信するだけですか? – mrkernelpanic

答えて

0

これは、SpringがHTMLフォームからModelAttributeを読み込むことができない場合に発生します。

Razminは春が(自動で満たされたPOSTリクエストのボディから(タイプStaffRegistrationBeanである)あなたのModelAttributeを投入しようとしている、言ったようにstaffRegistrationBean ModelAttributeがあなたの性別オブジェクト

2

するために、HTMLの性別の属性を変換することはできませんHTMLフォーム)。 1:あなたはPOSTリクエストのボディを見れば


あなたは性別のようなものが表示されます。 SpringはこのIntegerをGenderにマップすることはできません(このIntegerが単にあなたのGenderのIDを参照していても)。。 DBからGenderを手動で取得してモデルに設定する必要があります。

関連する問題