Передача значений формы из тимилиста в класс Control и рендеринг объектов Collection на другую страницу - PullRequest
0 голосов
/ 08 июня 2018

Я недавно обнаружил Thymeleaf, но мне трудно понять, как его использовать.И мне действительно нужно это сделать.

По сути, у меня есть этот метод

public Collection renderHost(String Hostgroup, String startDate, String endDate){
    HostDao ho= new HostDao();
    ho.getAllHosts(Hostgroup);
    ho.generateObjects(startDate, endDate);
    return ho.getListaOgg().values();
}

Так что он возвращает коллекцию хост-объектов

public class Host {
    private String deviceName;
    private String deviceIP; 
    private double connectionLoss; 
    private double responseTime; 
    private double packetLoss; 
    private String upTime; 
    private double cpuUtil;
    private double Temp; 
    private double memory;
}

Я хочу, чтобы эта отправкаform:

<form th:action="/gethosts" method="post">
    <label>Hostgroup name:</label>
    <input type="text" name="Hostgroup" id="Hostgroup">
    <label>Date start</label>
    <input type="date" name="startDate" id="startDate" >
    <label>date end</label>
    <input type="date" name="endDate" id="endDate" r>
    <input type="submit" value="submit">
</form>

он передает 3 переменные моему классу контроллера, помещает его в метод и отрендеренные коллекции объектов для передачи на другую страницу тимелиста, где я могу использовать все объекты для создания содержимого таблицыиспользуя:

<th:foreach th:each="...">
    ...block to be repeated...
</th>

как то так.Извините, если мои показания не так велики.Но мне трудно понять, с чего начать, поиск в Интернете только смущает меня больше.Любая помощь обязательна.

РЕДАКТИРОВАТЬ: добавил мою попытку установки контроллера

@RequestMapping(value="/gethosts", method=RequestMethod.GET)
public Model renderHost(@RequestParam("Hostgroup") String Hostgroup,
                        @RequestParam("dataInizio") String dateInizio,
                        @RequestParam("dataFine" ) String dateFine, Model model) {
   model.addAttribute("hostGroup", Hostgroup);
   model.addAttribute("dateStart", dateInizio);
   model.addAttribute("dateEnd", dateFine);
   return model;
}

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Если вам нужно использовать это как POST-запрос, используйте этот.

Создайте класс Host.java.

public class Host  {
    private String hostGroup;
    private String dateStart;
    private String dateEnd;

   // add getters and setters as well
}

Напишите метод для отображения страницы

@RequestMapping(value = "/renderPage", method = RequestMethod.GET)
    public String renderPage( Model model,HttpServletRequest request, HttpServletResponse response )
    {

        model.addAttribute("host", new Host() );

        return "page";
    }

Способ обработки POST-запроса

@RequestMapping(value = "/gethosts", method = RequestMethod.POST)
    public String renderHost( @ModelAttribute("Host") Host host )
    {

  }

И соответствующим образом изменить HTML.

<form th:action="/gethosts" method="post" th:object="${host}">
    <label>Hostgroup name:</label>
    <input type="text" name="host.hostgroup" id="Hostgroup">
    <label>Date start</label>
    <input type="date" name="host.startDate" id="startDate" >
     <label>date end</label>
    <input type="date" name="host.endDate" id="endDate" r>
   <input type="submit" value="submit">

  </form>
0 голосов
/ 08 июня 2018

Прежде всего, вы отправляете свою форму как пост, и у вас есть метод get в контроллере.Второе - это метод вашего контроллера:

 @RequestMapping(value="/gethosts", method=RequestMethod.GET)
   public **String** renderHost(@RequestParam("Hostgroup") String Hostgroup,
                             @RequestParam("dataInizio") String dateInizio,
                             @RequestParam("dataFine" ) String dateFine ,   Model model) {
   model.addAttribute("hostGroup", Hostgroup);
   model.addAttribute("dateStart", dateInizio);
   model.addAttribute("dateEnd", dateFine);
   return  "put your html page name";
     }

или:

 @RequestMapping(value="/gethosts", method=RequestMethod.GET)
   public ModelAndView renderHost(@RequestParam("Hostgroup") String Hostgroup,
                             @RequestParam("dataInizio") String dateInizio,
                             @RequestParam("dataFine" ) String dateFine) {
   ModelAndView model = new ModelAndView("put your html page name");
   model.addAttribute("hostGroup", Hostgroup);
   model.addAttribute("dateStart", dateInizio);
   model.addAttribute("dateEnd", dateFine);
   return  model;
     }

В вашем контроллере вы просто возвращаете модель без какой-либо информации о шаблоне, который вы используете.Измените метод формы на «GET», если вы хотите сделать это таким образом.Я предлагаю вам создать класс формы, когда у вас есть поля, которые вы хотите использовать в своей HTML-форме.Затем вы просто отправляете этот метод POST и в методе контроллера извлекаете информацию из формы.

Дополнительная информация здесь: https://spring.io/guides/gs/handling-form-submission/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...