2014-10-09 2 views
3

Я новичок в Spring MVC (от Grails). Можно ли использовать HashMap в качестве бэк-бланка формы?Используйте HashMap в качестве формы Backing Bean Spring MVC + ThymeLeaf

В Grails у одного есть доступ к объекту, называемому params, из любого действия контроллера. Params - это просто карта, содержащая значения всех полей, включенных в данные POSTed. Из того, что я прочитал до сих пор, мне нужно создать бланк формы для всех моих форм.

Использует Карты в качестве объекта поддержки?

ответ

5

Для этого вам не нужно использовать объект поддержки формы. Если вы просто хотите получить доступ к параметрам, переданным по запросу (например, POST, GET ...), вам необходимо получить карту параметров с помощью метода HttpServletRequest#getParameterMap. Посмотрите пример, который печатает все параметры имени и значения для консоли.

С другой стороны. Если вы хотите использовать привязку, вы можете обернуть объект Map в бланк формы.

Контроллер

import java.util.Arrays; 
import java.util.Map; 
import java.util.Map.Entry; 

import javax.servlet.http.HttpServletRequest; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
public class ParameterMapController { 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String render() { 
     return "main.html"; 
    } 

    @RequestMapping(value = "/", method = RequestMethod.POST) 
    public String submit(HttpServletRequest req) { 
     Map<String, String[]> parameterMap = req.getParameterMap(); 
     for (Entry<String, String[]> entry : parameterMap.entrySet()) { 
      System.out.println(entry.getKey() + " = " + Arrays.toString(entry.getValue())); 
     } 

     return "redirect:/"; 
    } 
} 

main.html

<!DOCTYPE html> 
<html lang="en" xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <meta charset="utf-8" /> 
</head> 
<body> 

<form th:action="@{/}" method="post"> 
    <label for="value1">Value 1</label> 
    <input type="text" name="value1" /> 

    <label for="value2">Value 2</label> 
    <input type="text" name="value2" /> 

    <label for="value3">Value 3</label> 
    <input type="text" name="value3" /> 

    <input type="submit" value="submit" /> 
</form> 

</body> 
</html> 
+0

Спасибо! Это именно то, что мне нужно. – jett

+0

@ michal.kreuzman Можете ли вы, пожалуйста, помочь мне по моему вопросу, я не могу связать карту в jsp тег, пожалуйста, просмотрите мое сообщение для более подробной информации http://stackoverflow.com/questions/30679449/forminput-tag-in-jsp -is-не-превращающие ко входу-теги из-HTML-для-картографирование недвижимости – henrycharles

Смежные вопросы