2017-02-23 26 views
0

Я пытаюсь передать значение из jsp в контроллер POST.получить выбранное значение в контроллере - jsp/spring

У меня есть контроллер ПОЛУЧАЕТ:

@RequestMapping(value = "/matches/{pageNumber}/", method = RequestMethod.GET) 
public String games(@PathVariable Integer pageNumber, Model model) { 


    .... 



    //build map for dropdown compatitions 
    HashMap<Integer, String> leaguesMap = new HashMap<Integer, String>(); 
    leaguesMap.put(1, "Top Leagues"); 
    leaguesMap.put(2, "All"); 
    for (Competition competition : competitions) { 
     if(!leaguesMap.containsKey(competition.getApiId())){ 
      leaguesMap.put(competition.getApiId(), competition.getName()); 
     } 
    } 






    model.addAttribute("leaguesMap", leaguesMap); 
    ..... 
    return "upcomingMatches"; 
} 

, а затем в JSP:

<form:form modelAttribute="leaguesMap" action="drop" class="dropdown-leagues" method="POST"> 
             <form:select path="${leaguesMap.value}" id="league-selection" onchange="this.form.submit()" class="form-control select-filter select2-hidden-accessible" aria-hidden="true"> 
              <form:options items="${leaguesMap}" />            
            </form:select>   
            <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>    
          </form:form> 

Я пытаюсь получить выбранное значение в контроллере POST:

@RequestMapping(value = "/matches/{pageNumber}/drop", method = RequestMethod.POST) 
public String games(@ModelAttribute("leaguesMap") String leaguesMap, @PathVariable Integer pageNumber, BindingResult result) { 

    String fff = leaguesMap; 
    System.out.println("asadasdadsa"+fff); 

    return "redirect:/matches/{pageNumber}/"; 
} 

Но получение всегда null. Если вы можете дать мне направление, как действовать, это будет здорово. Спасибо!

ответ

1

Создать класс модели League.class

public class League { 
    private Integer id; 
    private String name; 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

Изменить контроллер ПОЛУЧАЕТЕ:

@RequestMapping(value = "/matches/{pageNumber}/", method = RequestMethod.GET) 
     public String games(@PathVariable Integer pageNumber, Model model) { 
      .... 

      //build map for dropdown compatitions 
      HashMap<Integer, String> leaguesMap = new HashMap<Integer, String>(); 
      leaguesMap.put(1, "Top Leagues"); 
      leaguesMap.put(2, "All"); 
      for (Competition competition : competitions) { 
       if(!leaguesMap.containsKey(competition.getApiId())){ 
        leaguesMap.put(competition.getApiId(), competition.getName()); 
       } 
      } 
      model.addAttribute("leaguesMap", leaguesMap); 
      model.addAttribute("league", new League()); 

      ..... 


     return "upcomingMatches"; 
    } 

Изменить свой JSP:

<form:form modelAttribute="league" action="drop" class="dropdown-leagues" method="POST"> 
    <form:select path="id" id="league-selection" onchange="this.form.submit()" class="form-control select-filter select2-hidden-accessible" aria-hidden="true"> 
     <form:options items="${leaguesMap}" /> 
    </form:select> 
    <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> 
</form:form> 

И, наконец, ваш почтовый контроллер:

@RequestMapping(value = "/matches/{pageNumber}/drop", method = RequestMethod.POST) 
public String games(@ModelAttribute("league") League league, @PathVariable Integer pageNumber, BindingResult result) { 

    System.out.println("asadasdadsa" + league.getId()); 

    return "redirect:/matches/{pageNumber}/"; 
} 
+0

Имеет ли смысл иметь класс модели для каждого выпадающего списка? – ygrunin

+0

Вам не нужно иметь модель для каждого раскрывающегося списка, вместо этого создайте модель в соответствии с содержимым вашей формы. – mhshimul

+0

Что делать, если мне нужно получить значение из jsp без формы? Является ли это возможным? – ygrunin

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