Spring form tag создает массив значений - PullRequest
0 голосов
/ 02 мая 2019

У меня есть простая форма, где пользователь может выбрать значение из выбора.Я не уверен, как это работает, но если есть селекторы, указывающие на одно и то же поле в классе POJO, значение не переопределяется, а два значения разделяются запятой.Почему это происходит?Есть ли какая-либо конкатенация строк между сценами?

Это выглядит так:

<form:form action="processForm" modelAttribute="student">

        First Name : <form:input path="firstName"/>
        <br><br>
        Last Name : <form:input path="lastName"/>
        <br><br>
        Country : <form:select path="country">
                    <form:option value="Brazil" label="Brazil" />
                    <form:option value="France" label="France" />
                    <form:option value="Germany" label="Germany"></form:option>
                    <form:option value="India" label="India"></form:option>
                    <form:option value="" label="Select" />
                </form:select>
        <br><br>
        Country : <form:select path="country">
                    <form:options items="${student.countryOptions}" />
                </form:select>
        <br><br>
        <input type="submit" value="Submit">

    </form:form>

enter image description here

@Controller
@RequestMapping("/student")
public class StudentController {

    @Value("#{countryOptionsID}")
    private Map<String, String> countryOptionsProperties;

    @Value("#{favoriteLanguageID}")
    private Map<String, String> favoriteLanguageProperties;

    @RequestMapping("/showForm")
    public String showForm(Model theModel) {

        theModel.addAttribute("student", new Student());
        // add the country options to the model
        theModel.addAttribute("theCountryOptions", countryOptionsProperties);
        theModel.addAttribute("theFavoriteLanguageOptions", favoriteLanguageProperties);
        return "student-form";
    }

    @RequestMapping("/processForm")
    public String processForm(@ModelAttribute("student") Student theStudent) {
        System.out.println("Student Details : " + theStudent);
        return "student-confirmation";
    }

    @RequestMapping("/processFormA")
    public String processFormA(Student student) { //without using @ModelAttribute
        System.out.println("without using @ModelAttribute Student Details : " + student);
        return "student-confirmation";
    }

}

и свойствакак:

BR=Brazil
FR=France
CO=Colombia
IN=India
LK=Sri Lanka

1 Ответ

0 голосов
/ 02 мая 2019

Если вы заполните модель в контроллере:

theModel.addAttribute("theCountryOptions", countryOptionsProperties);

Это означает, что в представлении вы можете получить этот объект:

Country : 
<form:select path="country">
    <form:options items="${theCountryOptions}" />
</form:select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...