Java SpringMVC中重定向或重定向模型问题的解决方案

Java SpringMVC中重定向或重定向模型问题的解决方案,java,spring,eclipse,spring-mvc,model-view-controller,Java,Spring,Eclipse,Spring Mvc,Model View Controller,我目前已经为我的索引页面构建了一个控制器,它也是一个登录页面 使用控制器,如果用户的登录凭据匹配,我将映射jsp,如果不匹配,我希望重定向到带有消息“对不起,用户名,密码错误”的索引页面 代码如下: 控制器 if(uname.equals(inf.getUsername())&&pwd.equals(inf.getPassword())&&dept.equals(inf.getDept())) { req.getSessio

我目前已经为我的索引页面构建了一个控制器,它也是一个登录页面

使用控制器,如果用户的登录凭据匹配,我将映射jsp,如果不匹配,我希望重定向到带有消息“对不起,用户名,密码错误”的索引页面

代码如下:

控制器

if(uname.equals(inf.getUsername())&&pwd.equals(inf.getPassword())&&dept.equals(inf.getDept()))
        {
            req.getSession().setAttribute("uname",inf.getName());
            return new ModelAndView("employeeLoginResult", "message", message1); 

        }
        else if(uname.equals(inf2.getUsername())&&pwd.equals(inf2.getPassword())&&dept.equals(inf2.getDept()))
        {
            req.getSession().setAttribute("uname",inf2.getName());
            return new ModelAndView("adminLoginResult", "message", message2); 
        }
        else
        {

            return new ModelAndView("redirect:/index.jsp","message","Sorry");
        }
索引页

<b><span class="heading">LOGIN USER</span></b>
    <div class="container">
        <form action="login.html" method="Post">
            <div class="form_style">
            <input type="text" name="username" placeholder="Enter Username"/>
            <input type="password" name="pwd" placeholder="Enter password"/>
            <select name="dept">
                <option>IT</option>
                <option>Admin</option>
                <option>HR</option>
                <option>Marketing</option>
            </select>
            <input type="Submit" value="submit">
            <span class='disp'>${message}</span>
            </div>
        </form>
    </div>
登录用户
信息技术
管理
人力资源
营销
${message}
重定向可以工作,但消息会附加到Url中,如下所示:

我只想在带有${message}的索引文件上打印“对不起用户名密码错误”

我的问题: 是否可以将ModelAndView与RedirectView一起使用,或者如果没有其他解决方案,是否可以使用ModelAndView将重定向发送到我的索引页

如有任何建议或意见,我们将不胜感激。 感谢您的支持。

“重定向有效,但消息会附加到Url中”这是正常重定向属性的预期行为

通过不在浏览器中显示URL,可以使用flash属性重定向

例如,请参阅以下代码:

@RequestMapping(value = "/accounts", method = RequestMethod.POST)
 public String handle(Account account, BindingResult result, RedirectAttributes redirectAttrs) {
   if (result.hasErrors()) {
     return "accounts/new";
   }
   // Save account ...
   redirectAttrs.addAttribute("id", account.getId()).addFlashAttribute("message", "Account created!");
   return "redirect:/accounts/{id}";
 }

请参阅:

是否可以添加类似MyConfig的类

@EnableWebMvc
@Configuration
public class MyConfig {
   @Autowired
   private RequestMappingHandlerAdapter requestMappingHandlerAdapter;

   @PostConstruct
   public void init() {
     requestMappingHandlerAdapter.setIgnoreDefaultModelOnRedirect(true);
}
}

你能分享一些代码供参考吗?或者任何来源?您是否查看过将exposeModelAttributes设置为false的RedirectView?问题是,我只返回ModelAndView,无法使用RedirectView。你能分享一些代码参考吗?你使用的是基于xml的配置吗?你能添加我已经在使用的
吗。我用您的代码替换了它,但出现了一个错误:元素“mvc:注释驱动”中不允许出现属性“ignoreDefaultModelOnRedirect”。我似乎无法添加@PostConstruct。它说我需要手工制作这个注解。import javax.annotation.PostConstruct;我可以请你进行讨论吗?因为我似乎有很多问题,但我似乎找不到解决问题的方法。对不起,stackoverflow中的讨论是什么?您可以尝试导入PostConstruct吗?我导入了javax.annotation.PostConstruct。PostConstruct解决了问题,但这应该做什么?你会硼酸吗?