SpringMVC中的Redirect或RedirectModel问题的解决方案

时间:2018-08-27 03:55:47

标签: java spring eclipse spring-mvc model-view-controller

我目前为我的索引页面(也是登录页面)构建了一个控制器。

使用控制器,如果用户的登录凭据匹配,并且我不希望通过消息“对不起的用户名,密码错误”重定向到索引页面,我将映射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>

重定向有效,但消息会像下面这样附加在Url中: enter image description here

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

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

任何建议或意见都值得赞赏。 谢谢你。

2 个答案:

答案 0 :(得分:1)

重定向有效,但消息被附加到网址中”,这是正常重定向属性的预期行为。

您可以通过不显示浏览器中的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}";
 }

请参阅:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/support/RedirectAttributes.html

答案 1 :(得分:0)

是否可以添加MyConfig之类的类

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

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