2017-06-03 49 views
1

我想用Spring MVC而不是Spring Html標籤來使用普通的Html標籤 ,但我無法使用簡單的html標籤獲取輸入值給控制器。如何將Html輸入值(Html表單)傳遞給java控制器? - Spring MVC

下面是我的代碼: -

控制器:

@Controller 
public class LoginService { 

    @RequestMapping(value = "/authenticate", method = RequestMethod.GET) 
    public String authenticateUser(Model model,@ModelAttribute("userName") String userName, 
      @ModelAttribute("password") String password) { 
     System.out.println("coming in controller " +userName +" : "+ password); 
     model.addAttribute("message", "Hello Spring MVC Framework!"); 
     return "success"; 
    } 

JSP:

<body> 
<h2>${message}</h2> 
<form action="authenticate.htm"> 
    <table> 
     <caption> 
      <h3>Enter Your Login Credentials</h3> 
     </caption> 
     <tr> 
      <td>User Name</td> 
      <td><input type="text" id="userName"></input></td> 
     </tr> 
     <tr> 
      <td>Password</td> 
      <td><input type="password" id="password"></input></td> 
     </tr> 
     <tr rowspan="2"> 
      <td><input type="submit"></input></td> 
     </tr> 
    </table> 
</form> 

的web.xml

<servlet> 
     <servlet-name>HelloWeb</servlet-name> 
     <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>HelloWeb</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 

回答

2

使用RequestParam而不是ModelAttribute

@RequestMapping(value = "/authenticate", method = RequestMethod.GET) 
    public String authenticateUser(@RequestParam("userName") String userName, @RequestParam("password") String password ,Model model) { 
     System.out.println("coming in controller " +userName +" : "+ password); 
     model.addAttribute("message", "Hello Spring MVC Framework!"); 
     return "success"; 
    } 

你必須改變表單的動作URL在JSP:

<form action="/authenticate"> 

更新你的web.xml文件與以下行:

<url-pattern>/url-pattern> 
+0

我收到HTTP 404 「 HTTP狀態400 - 必需的字符串參數'userName'不存在「 並且描述爲」客戶端發送的請求在語法上不正確(必需字符串參數'userName'不存在)。 「 – shivam

+0

清除瀏覽器緩存,並嘗試更新代碼 – VNT

+0

我清除緩存並再次運行項目而不更改表單動作..但它顯示相同的異常 – shivam

相關問題