如何从下拉框中获取用户选择的值并将其添加到模型中? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从下拉框中获取用户选择的值并将其添加到模型中? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一个用户正在创建新考试的表单,用户可以从下拉菜单中选择一个主题。此下拉列表包含主题字符串而非实际主题对象。在我的程序中,存在与考试具有一对多关系的实际主题对象。

如何找到用户选择的值?我想将它添加到模型中,以便我可以创建一个考试对象并将其添加到数据库中。

将用户选择的主题字符串添加到模型后,如何找到用户选择的值?因为我想将他们选择的内容设置为相同的主题名称,然后在主题库中搜索具有相同名称的主题,以便可以将考试添加到该主题。

希望我的代码能让这一点更加清晰。

我收到了这个错误。绑定结果和bean名称主题的普通目标对象都不可用作请求属性。

这个代码形成了我的控制器

@GetMapping("/addexam")
public String showExamForm(Model model) {

    // Here I am finding the subjects that belong to the current user 

  //and adding them as strings to an arraylist. 


  //I populate the dropdown with strings fromthis arraylist.        


    Authentication loggedInUser = SecurityContextHolder.getContext().getAuthentication();
    String email = loggedInUser.getName();   

    User user = userRepository.findByEmailAddress(email);

    ArrayList<String> subjects = new ArrayList<String>();

    for(Subject sub:user.getSubject())
    {
        subjects.add(sub.getSubjectName());
    }
        model.addAttribute("subjects", subjects);

return "addExam";
}

@PostMapping("/addexam")
public String addNewExam(@ModelAttribute("exam") @Valid @RequestBody Exam 
 exam,UserRegistrationDto userDto, BindingResult result, Model model) {

    examRepository.save(exam);
    model.addAttribute("examTitle", exam.getExamTitle());
    model.addAttribute("examGradeWorth", exam.getExamGradeWorth());
    model.addAttribute("subject", exam.getSubject()); 


    //I want to find the user selected value and set it to equal 
    //subjectname:
    String subjectName =;

//Here I will search the subjectRepository for the subjectName and set subject to equal the subject that was found.

    Subject subject = subjectRepository.findBySubjectName(subjectName);
 //then exam will be added to that subject as subject has a one to many relationship with exam.

    subject.addExam(exam);
subjectRepository.save(subject);

return "userProfile1";


}
 }

这是html

<form action="#" th:action="@{/addExam}" th:object="${exam}" 
         method="post">
                     <div th:object="${subject}">
            <select th:field="*{subject}" class="form-control" id="subject"             
   name= "subject">
            <option value="">Select subject</option>

            <option 
                th:each="Subject : ${subjects}" 
                th:value="${Subject}" 
                th:text="${Subject}"></option>
         </div>
         <div>
                <table>
                    <tr>

                     <td><input type="text" th:field="*{examTitle}" /></td>

                    </tr>  
                    <tr>
                        <td> Exam grade worth </td>
                        <td><input th:field="*{examGradeWorth}" /></td>

                        </tr>  
答案

我认为你不需要使用两个th:object。只需使用th:value

例如,在下一个示例中,您将发送两个对象并在name对象中设置student,在status对象中设置exam。 (它不代表你的模型。这只是一个例子)。

<form th:action="@{/addExam}" method="post">
      <input type="text" th:value="${student.name}" name="name"/>
      <input type="text" th:value="${exam.status}" name="status"/>
      <button type="submit">Go</button>
</form>

如果有一堆th:object字段,exam会很有用。

请记住,字段的名称必须与bean字段名称匹配。

因此,您的HTML或多或少会看起来像这样:

<form action="#" th:action="@{/addExam}" method="post">
      <div>
          <select th:field="*{subject}" class="form-control" id="subject" name="subject">
            <option value="">Select subject</option>

            <option 
                th:each="Subject : ${subjects}" 
                th:value="${Subject}" 
                th:text="${Subject}"></option>
         </div>
         <div>
                <table>
                    <tr>

                     <td><input type="text" th:field="*{exam.examTitle}" /></td>

                    </tr>  
                    <tr>
                        <td> Exam grade worth </td>
                        <td><input th:field="*{exam.examGradeWorth}" /></td>

                        </tr>  

如果有效,请告诉我!

以上是关于如何从下拉框中获取用户选择的值并将其添加到模型中? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

从表格中选择不同的名称和编号并将其显示到下拉框中,然后保存我该怎么办?

如何从文本框中获取数据并将其添加到 dataTable?

jquery如何去掉下拉框中重复的值

如何在颤振中实现未来的下拉列表并根据用户选择更新值

java如何实现用户在文本框中输入好友昵称,点击查询,根据用户输入匹配好友昵称,结果加载到下拉框中

如何从数据库中获取大量数据并通过输入输入将其显示到下拉列表过滤器中,但只能从数据库中选择