3

Spring MVC 3 に 2 つの異なるフォーム (2 つの異なる送信) を持つページがあり、@ModelAttribute メソッドに問題があります。同じコントローラーに 2 つある場合、それらが常に実行されるとは限らず、モデルが NULL になります。

コード:

@Controller
@RequestMapping(value = "/session/admin/permission/{userId}")
public class PermissionController {

    @Autowired
    private UserManager userManager;

    @ModelAttribute("passwordValidation")
    private PasswordValidation getPasswordModel(){
        return new PasswordValidation();
    }

    @ModelAttribute("user")
    private User getUserModel(@PathVariable("userId") String userId){
        //This is not executed
        return userManager.getUser(userId);
    }

    @ModelAttribute("permissionsAvailable")
    private PermissionsAvailable getPermissionsModel(@ModelAttribute("user") User user)     {
        return new PermissionsAvailable();
    }

    @RequestMapping(method = RequestMethod.GET)
    public String adminPermission(){
        return "/security/permission";
    }

    @RequestMapping(method = RequestMethod.POST, params="changeRoles")
    public String modifyPermission(@ModelAttribute("permissionsAvailable") PermissionsAvailable permissions,
            HttpServletRequest request, @ModelAttribute("user") User user, 
            final RedirectAttributes redirectAttributes){
        //Modify something
    }

    @RequestMapping(method = RequestMethod.POST, params="changePassword")
    public String modifyPassword(
            @ModelAttribute("passwordValidation") PasswordValidation passwordValidation,
            @ModelAttribute("user") User user,
            HttpServletRequest request, BindingResult bindingResult, 
            final RedirectAttributes redirectAttributes){
        return "newpage";
    }
}

理由はわかりません。すべてがうまくいき、すべてのメソッドが実行されることもありますが、実行されないこともあります。

更新:同じ問題を抱えた2つの異なるコントローラーがあるため、Springのエラーか、何か間違っているに違いありません。

ありがとう。

4

1 に答える 1