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

2024-04-24

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

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

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

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

我收到这个错误。 Bindingresult 和 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 in student对象和status in 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 fields.

请记住,字段名称必须与 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>  

让我知道它是否有效!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • SKMaps 显示黑色/蓝色背景

    我正在使用 SKMaps 在 android 中实现路线导航 为此 我展示了一个使用 SKMap 的单独活动 当我第一次展示该活动时 地图会显示并且导航正在工作 如果我从这个活动返回并再次启动这个导航活动 那么它将显示一个带有黑色 蓝色背景
  • 在 C# 中使用鼠标单击在图片框上绘制线条

    我正在尝试制作一个程序 可以在图片框 http msdn microsoft com en us library system windows forms picturebox 28v vs 110 29 aspx使用鼠标单击要绘制线的起点
  • 从输入跳到 CellTable 中的输入

    我有一个 CellTable 其中包含一堆渲染到的单元格
  • 迷你图渲染速度慢并且浏览器挂起

    迷你图 http omnipotent net jquery sparkline 非常适合制作小型内联图 但是 如果它们所在的容器是隐藏的 则不能简单地将它们绘制在幕后然后显示它们 您必须首先显示容器 然后调用 sparkline disp
  • 从子域登录 Facebook(太多“有效 OAuth 重定向 URI”)

    我遇到了以下问题 我正在使用 Facebook js sdk 进行登录过程 在应用程序设置中Site URL被设定为 http example com http example com 应用程序域 are example com www e
  • 无法在 NestedScrollView 内完全滚动

    不知何故 我无法在 NestedScrollView 内完全滚动 我的 NestedScrollView 内部是一个 TextView 其中有很多文本 下面有一个按钮 当我向下滚动时 我只能看到按钮的顶部 只有几个像素 它滚动得不够远 这是
  • 在Kestrel中重写后获取原始URL

    Apache 将根据重写的 URL 选择要提供服务的文件 但原始 URL 将传递给脚本 Kestrel 将重写的 URL 传递到管道中 可通过HttpContext Request Path 是否可以访问原网址来自中间件重写后 遵循 Tse
  • .Net Core 2.0 - 获取 AAD 访问令牌以与 Microsoft Graph 一起使用

    当使用 Azure AD 身份验证启动新的 Net Core 2 0 项目时 您将获得一个可以登录租户的工作示例 太棒了 现在我想获取登录用户的访问令牌并使用它来使用 Microsoft Graph API 我没有找到任何有关如何实现这一目
  • 在 odoo12 的表单视图中隐藏操作/更多按钮

    我想在 odoo12 中仅隐藏操作 更多按钮而不是打印按钮 我发现一些类似的问题在 odoo12 中不起作用 不是一个像样的答案 而是你的一个方向 源码中 我的版本是11 odoo 11 0 addons web static src js
  • 在分布式 dask 中,我们如何为每个工作人员选择 --nthreads 和 --nprocs ?

    我们如何选择 nthreads and nprocsDask 中每个工人的分布情况 我有 3 个工作线程 2 个工作线程有 4 个核心 每个核心有一个线程 1 个工作线程有 8 个核心 根据输出lscpu每个worker上的Linux命令
  • 如何将基数词转换为序数词

    有没有一种简单的方法可以将数字 1 2 3 转换为 1st 2nd 3rd 并且以这种方式我可以为该函数提供一种语言并具有它会返回我目标语言的正确形式吗 标准 C stl 或 boost 都可以 MFC 或 ATL win32 api 或我
  • 如何简洁地赋值并立即调用函数变量?

    以下是在闭包中定义匿名函数 调用该函数并忽略它的方法 function do stuff 这用于维持有限的范围而不向脚本添加大量内容 IIFE 立即调用函数表达式 如果您希望立即执行某个函数 同时仍保留该函数以供将来使用 该怎么办 如下所示
  • 在重新激活 WiFi/移动网络之前,服务中的 Android 位置侦听器无法工作

    我的位置侦听器工作正常 收集数据没有任何问题 但有时它不收集任何数据 我此时必须关闭并重新启动我的位置提供程序 重新启动可以解决问题 但是 这可能不是用户期望做的最好的事情 当我使用 GPS 作为提供商时 没有问题 位置侦听器在服务中工作
  • 在react-router-dom中隐藏某些页面的标题

    有没有办法可以仅隐藏 React Router 中某些路由的页面标题 我现在的问题是我的App组件呈现我的Main组件 其中包含我的BrowserRouter 和我的Header呈现在我的App组件 所以我无法根据路由路径渲染标题 这是一些
  • 如何从access中的表中获取选择性记录

    下面给出的是我的查询结果 但有很多冗余记录 因此 我想过滤掉这个查询的结果 我的目标是每个角度仅提取两个记录 第一个和最后一个 例如当角度为195 我想获得它的第一条记录日期 2 27 2017 时间 2 00 00 AM和 日期为的第二条
  • 禁用 Chrome 严格 MIME 类型检查

    有什么办法可以禁用strict MIME type checking在 Chrome 中 实际上我正在跨域发出 JSONP 请求 它在 Firefox 上工作正常 但是在使用 chrome 时 它 在控制台中出现一些错误 拒绝执行来自 的脚
  • 批处理文件随机删除文本文件的一半行?

    我需要一种方法来使用批处理来查看文本文件的每一行 并删除该文本文件中的一半行 随机选择要删除的行 这是为了模拟 D D 游戏中的锦标赛 我所需要的只是一种方法来淘汰每轮比赛的获胜者 我可以轻松地制作一个批处理文件 复制文本文件并为每一轮重命
  • Ionic 4:Cordova 不可用。确保包含 cordova.js 或在设备/模拟器中运行

    我正在尝试在新的 ionic 4 项目中使用 cordova 插件 但我总是遇到有关 cordova 的错误 该插件已正确安装并显示在插件文件夹中 Error 本机 尝试调用 SplashScreen hide 但 Cordova 不可用
  • 使用 ggplot 为长格式数据创建散点图

    我研究了一个长格式的 data frame 在每种情况下都有不同数量的实体 如下所示 Condition rating Control 2 1596456 Control 0 2385878 Control 3 0042808 Contro
  • 如何从下拉框中获取用户选择的值并将其添加到模型中? [复制]

    这个问题在这里已经有答案了 我有一个表单 用户在其中创建新考试 并在表单中用户从下拉菜单中选择一个主题 该下拉列表包含主题字符串 而不是实际的主题对象 在我的程序中 存在与考试具有一对多关系的实际主题对象 如何找到用户选择的值 我想将其添加