0

Spring MVCには、次のコントローラーがあります。

@RequestMapping(value="adminUsers", method = RequestMethod.POST) 
public ModelAndView listAdminUsers(Person newPerson,  HttpServletResponse response)  throws Exception {
Person person = personService.findPerson(newPerson.getUsername());
if (person == null) {
    // Set errorText = "Invalid Person";
    // redisplay view
    ModelAndView mav = new ModelAndView("adminUsersList");
    return mav;
} else {
    Roles roles = new Roles();
    roles.setPersonCode(person.getPersonCode());
    roles.setRoleType("ADMN");
    rolesMapper.insert(roles);
    return new ModelAndView("redirect:/admin/adminUsers.html");
} 
}

ビューで:

    <form:form method="post" action="${action}" commandName="person" >
    <form:label path="username">Add new administrator:</form:label>
    <form:input path="username" size="20"/>
    <form:errors path="username" />
    <input type="submit" value="Submit Changes"/> </form:form>

<form:errors path="username" />タグで表示されるように、エラーをビューに戻すにはどうすればよいですか?

これは、このSpringMVCコントローラーからエラーステータスと検証エラーを返す方法と似ていますか?ただし、RESTオブジェクトではなくWebページを返すので、そこにある答えは当てはまりません。

Validator上記はデータベースを呼び出すため、使用したくありません。ユーザー名が空でないかどうかを確認するだけではありません。

ありがとう!

4

3 に答える 3

2

BindingResultメソッドシグネチャに追加します。そこから、bindingResult.rejectValue("username", "username.notvalid", "Username is not valid");

于 2012-08-07T13:10:08.737 に答える
0

BrandonVはそれを持っていました。私のコントローラーは次のようになります。

  // Create a new item
@RequestMapping(value="adminUsers", method = RequestMethod.POST)
public ModelAndView listAdminUsers(Person newPerson,  BindingResult result, HttpServletResponse response)  throws Exception {
    Person person = personService.findPerson(newPerson.getUsername());
    if (person == null) {
        result.rejectValue("username","username.notvalid","Username doesn't exist");
        ModelAndView mav = new ModelAndView("adminUsersList");  //This is ugly, it's copy & pasted from above
        mav.addObject("adminUsersList", adminService.findAllAdminUsers()); //Ugly...
        return mav;
    } else {
        Roles roles = new Roles();
        roles.setPersonCode(person.getPersonCode());
        roles.setRoleType("ADMN");
        rolesMapper.insert(roles);
        return new ModelAndView("redirect:/admin/adminUsers.html");
    }
}
于 2012-08-07T14:53:47.090 に答える
0

メソッドロジックを変更する必要があります。

if(result.hasErrors){return ""; } else {人物オブジェクトロジックの作成はここにあります!}

于 2015-03-11T10:14:01.473 に答える