在创建用户页面上提交不会转到spring-mvc controller

时间:2018-02-28 21:23:02

标签: spring-mvc

我通常使用JAX-RS REST服务,我必须使用Spring MVC对webapp进行一些更改,我只是表面上熟悉(MVC部分,而不是Spring)。

我有一个允许用户创建新用户的视图。提交表单时,页面只是“空白”,而不是在Spring MVC控制器中执行相应的操作,而不是转发到不存在的视图。

我不清楚这里要找什么。也许我可以启用一些日志记录来显示Spring做出的请求映射决策?

我会尝试在这里显示相关的代码片段。

在具有user / password / name字段形式的jsp页面中,有类似这样的内容:

<a href="#" onclick="validateUserCredentials();return false;" class="button">Create User</a>

我在“validateUserCredentials()”中设置了一个断点,它对输入字段进行了一些简单的验证:

function validateUserCredentials(){
    var inputPassword=/[a-zA-Z0-9_-]{4,14}/ ;
    var inputUsername=/[a-zA-Z0-9_-]{4,14}/ ;
    var error ="false";
    if (document.f.password.value.search(inputPassword)==-1)
    {
        error="true";
    }else if (document.f.username.value.search(inputUsername)==-1){
        error="true";       
    }else if (document.f.fullname.value.length==0){
        error="true";
    }else if (document.f.displayName.value.length==0){
        error="true";
    }
    if(error =="true"){
        document.f.action="/account/createuser?error=true";
        document.f.submit();        
    }else{
    document.f.action="/account/createuser";
    document.f.submit();
    }
}

以下是控制器的摘录:

@Controller
@SessionAttributes(value= {"userRoleMap", "userStatusMap"})
public class AccountController {

    private static Logger   logger  = LogManager.getLogger(AccountController.class);

    @Autowired
    private UserAccountService accountService;

    @RequestMapping(value = "/account/getCurrentUsers", method = RequestMethod.GET)
    public ModelAndView getCurrentUsers(ModelMap model) {
        logger.debug("In getCurrentUsers.");
        List<UserInfo> userInfoList =accountService.getCurrentUserList();
        Users users = new Users();
        users.setUserInfoList(userInfoList);
        HashMap<String,String> userRoleMap=populateAndGetUseridRoleMap(userInfoList);
        HashMap<String,Boolean> userStatusMap=populateAndGetUseridStatusMap(userInfoList);
        model.addAttribute("userRoleMap",userRoleMap);
        model.addAttribute("userStatusMap",userStatusMap);
        return new ModelAndView("userRole","users",users);
    }

    @RequestMapping(value = "/account/createuser", method = RequestMethod.GET)
    public String getCreateUserPage() {
        logger.debug("In getCreateUserPage.");
        return "createUser";
    }

    @RequestMapping(value = "/account/createuser", method = RequestMethod.POST)
    public String createUser(@RequestParam("username") String newUser,@RequestParam("password") String password,
            @RequestParam("role") String role,
            @RequestParam("fullname") String fullname, 
            @RequestParam("displayName") String displayName,
            @RequestParam(value="error", required=false) boolean error,ModelMap model) {
        logger.debug("In createUser. newUser[" + newUser + "] password[" + password + "] role[" + role +
                     "] fullname[" + fullname + "] displayname[" + displayName + "] error[" + error +
                     "] model[" + model + "]");

当我点击提交按钮时,页面只是“空白”。在提交之前,网址位于“/ account / createuser”,并且在提交后它没有更改。

当我查看日志时,我只看到了这个:

controllers.AccountController (AccountController.java:73) - In getCurrentUsers.
controllers.AccountController (AccountController.java:104) - In getCreateUserPage.

它似乎没有进入“createUser”方法。

更新

我之前在日志中也注意到以下几行:

   org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod Mapped "{[/account/createuser],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String ...AccountController.createUser(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,boolean,org.springframework.ui.ModelMap)

1 个答案:

答案 0 :(得分:0)

这只是因为jsp页面中的一些应用程序链接是&#34; raw&#34;相对引用,而不是使用&#34;