2017-09-26 67 views
0

嗨,我试图改变在弹簧控制器中的表单动作时,浏览器中点击不同的网址。在弹簧控制器中动态地更改表单动作名称

当我点击网址:http://localhost:8080/DEMO/shas/getExtLogin?key=11然后,action以action =“/ DEMO/shas/getExtLogin?key = 11”的形式添加到表单标签中。

,但我需要改变行动,行动= “/ DEMO /管理/” 在LoginController.java getExternalLogin()方法,击中时网址:http://localhost:8080/DEMO/shas/getExtLogin?key=11

我的JSP代码:login.jsp的

<form:form id="login" commandName="loginDO" clas="form-header"> 

我的Java代码:LoginController.java

@RequestMapping(value = "/getExtLogin", method = RequestMethod.GET) 
    public ModelAndView getExternalLogin(HttpServletRequest request) { 
     String extInd = request.getParameter("extInd"); 
     request.getSession().setAttribute("extInd", extInd); 
     return new ModelAndView("jsp/login").addObject("loginDO", new LoginDO()); 

    } 

有没有办法来改变春季控制器形式的行动,而返回的ModelAndView?

+0

的[春季增加一个管理部分]可能的复制(https://stackoverflow.com/questions/15302699/adding-an-admin-section-in-spring) –

+0

我需要在Java文件中设置而不是xml中的配置。 – DEADEND

回答

0

我已经通过在表单标签中添加action =“$ {addUrl}”属性来解决问题。

<form:form id="login" commandName="loginDO" action="${addUrl}" clas="form-header"> 

并修改如下方法。

@RequestMapping(value = "/getExtLogin", method = RequestMethod.GET) 
public ModelAndView getExternalLogin(HttpServletRequest request) { 

    String extInd = request.getParameter("extInd"); 
    request.getSession().setAttribute("extInd", extInd); 

    ModelAndView mav = new ModelAndView(); 
    mav.addObject("addUrl", "/DEMO/admin/"); 
    mav.addObject("loginDO", new LoginDO()); 
    mav.setViewName("auth/crclogin"); 
    return mav; 
}