我不熟悉Thymeleaf,我对使用表单动态创建URL有一个问题。
我有一个简单的spring boot应用程序,它将对象存储在数据库中,我可以使用简单的URL查询数据库。例如,url/distance/0.3将返回距离属性小于或等于0.3的对象。当我在浏览器中编辑这些URL时,它们可以完美地工作。
我希望用户能够自己设置这些搜索值。我试图创建一个简单的表单,用用户输入创建上面的url,但出现以下错误:
Neither BindingResult nor plain target object for bean name 'dist' available as request attribute
我在html文档中尝试过这个:
<form th:action="@{/distance/{pathParam}(pathParam=${dist}}">`
<p>Distance: <input type="text" th:field="*{dist}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
试着从这场讨论中找到各种答案,但运气不好。
我也尝试使用控制器,如这里所建议的,在控制器中:
@GetMapping("/distance/search/")
public String userSetDistance(@RequestParam("dist") String dist) {
return "redirect:/distance/" + dist;
}
这个在html文件中:
<form th:action="@{/distance/search/}">
<p>Distance: <input type="text" th:field="*{dist}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
但这也不起作用。
你能帮我做这个吗?这个想法很简单,但我无法得到有效的东西。。。非常感谢。
使现代化
根据MohamedSanaulla给出的以下答案,我决定使用控制器来完成这项工作,创建了一个带有必填字段的“forms”对象,并按如下方式编辑了我的代码:
<form action="#" th:action="@{/distance/search}" th:object="${param}" method="post">`
<p>Distance: <input type="text" th:field="*{dist}"/></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
@PostMapping("/distance/search")
public String userGetClose(@ModelAttribute ("param") Forms form) {
String distance = String.valueOf(form.getDist());
return "redirect:/distance/" + distance;
}
理想情况下,我希望直接从html页面创建并调用url,以避免返回控制器仅仅创建url,但这很好。
您必须在控制器中使用ModelMap
或Model
,然后使用addAttribute
设置dist
:
public String controllerMethod(@RequestParam("dist") String dist,
Model model){
model.addAttribute("dist", dist);
return "viewName";
}
或者Thymeleaf提供上下文对象,以直接在HTML中获取查询参数,如${param.dist}
更新:
刚才看到控制器中有一个重定向:
。因此,dist
在请求参数中不再可用,因此,${param.dist}
将无法工作。更简单的解决方案是使用ModelMap
,并将dist
作为视图模型的一部分。
类MedicalJournalEntry: 类别血压: 我使用片段创建了一个表单。它对“普通”字段非常有效,但是自从我添加了嵌套对象字段后,Thymeleaf甚至不能再创建保存表单的视图了。当我想要显示窗体时,我总是得到以下错误: 以及引发问题的片段对应内容: 这是我的控制器。它只返回包含新MedicalJournalEntry的输入数据表单的视图:
我想知道,列表是如何在Spring绑定的……以及如何在Thymeleaf中访问它们。无论有没有包装类,如何通过表单将单个/多个对象添加到ArrayList或普通数组中。。 我非常感谢你的解释。 这就是我尝试过的:形式 包装器类 型号: 控制器 Edit1:现在它使用包装类并使用静态索引…没有包装类,我该如何实现这一点,我读了很多关于EL表达式${var.index},但这是如何工作的?我应该如何使
错误500 JDK 1.8 Tomcat 8.0.38 HTTP状态500-处理JSP页面/index1时发生异常。11号线 类型异常报告 消息处理JSP页面/index1时发生异常。11号线 说明服务器遇到内部错误,无法满足此请求。 index1。jsp 通用域名格式。快乐的心情。业主立案法团。豆小豆。JAVA RegisterAndLoginController。JAVA web.xml WE
本文章将介绍Thymeleaf中实现表单的语法和概念。 编辑源代码以便将产品列表中的某个数据。已经将类的对象列表设置为具有变量名称的上下文模型(参考:中的实现)。 如果要上机实践,请参考:Thymeleaf+SpringMVC5示例项目。这里不再重复创建项目的过程,这里将只介绍如何使用 Spring表达式和标签。 这里创建一个Maven Web项目: thymeleaf-tutorials ,其目
问题内容: 我正在IntelliJ IDEA 9中用一个按钮创建一个简单的GUI表单。用该表单创建的类不是JFrame或任何其他swing类。如何在源代码中调用表单? 问题答案: 只需进入与您的表单关联的类,按+ 并选择“ Form main()”即可。 资源: GUI设计器基础
基于活动记录(ActiveRecord)的表单:ActiveForm 在yii中使用表单的主要方式是通过 yii\widgets\ActiveForm。 当某个表单是基于一个模型时,应该首选这种方式。 此外,在 yii\helpers\Html 中有很多实用的方法为表单添加按钮和帮助文档。 在客户端显示的表单,大多数情况下都有一个相应的模型, 用来在服务器上验证其输入的数据(可在输入验证一节获取关