gpt4 book ai didi

java - 没有选择的 Thymeleaf 选项

转载 作者:行者123 更新时间:2023-12-02 05:06:00 25 4
gpt4 key购买 nike

从 Controller 中,我返回了一个包含对象列表的对象。我想在下拉列表中显示这些对象列表,没有预先选择(或默认值,即“选择菜肴”),但下拉列表显示为列表中预先选择的最后一个值。

Controller :

@GetMapping(path = "/createOrder")
public ModelAndView displayOrder(OrderFormDetails order) {
ModelAndView mav = new ModelAndView();
mav.addObject("order", orderService.displayOrder());
mav.setViewName("createOrder");
return mav;
}

型号:

public class OrderFormDetails {

@NotEmpty(message = "*Please provide your name")
private String name;

@NotEmpty(message = "*Please provide your address")
private String address;

private List < Dish > dishes;

查看:

<select class="form-control" th:field="*{dishes}" id="dropOperator">
<option value="" selected="selected">Sélect dish</option>
<option th:each="dish, itemStat : *{dishes}" th:value="*{dishes[__${itemStat.index}__].id}" th:text="*{dishes[__${itemStat.index}__].title}">
</option>
</select>

我尝试了多种技巧,但没有一个奏效。谢谢...

最佳答案

通常您不想在一个字段中将可能的选项和选定的选项混合在一起(正如您显然所做的那样)。您需要做的就是将这些事情解耦。可能的步骤可能会有所帮助:

  1. OrderFormDetails其作用类似于表单支持 bean,它应该包含所选值的占位符 ( Dish.id ) 而不是 List与可能的菜肴。更改您的OrderFormDetails以下内容:
public class OrderFormDetails {

@NotEmpty(message = "*Please provide your name")
private String name;

@NotEmpty(message = "*Please provide your address")
private String address;

private T selectedDish;

// getters, setters, rest of the class omitted

...哪里T是分配给 Dish.id 的类型字段。

  • 可能的(可选择的)菜肴应作为模型属性单独提供。将以下行添加到您的 displayOrder方法:
  • mav.addObject("dishes", getDishes());

    ...哪里getDishes()返回List<Dish>包含所有菜肴,可供用户选择。

  • 调整您的 View 以采用更新的方法:
  • <select class="form-control" th:field="*{selectedDish}" id="dropOperator">
    <option value="" selected="selected">Sélect dish</option>
    <option th:each="dish : ${dishes}" th:value="${dish.id}" th:text="${dish.title}">
    </option>
    </select>

    仅此而已。 documentation中也展示了这种方法。 -th:field<select> level 指的是表单支持 bean 的字段,而 <option>元素是从单独的集合创建的,提供为 model attribute .

    关于java - 没有选择的 Thymeleaf 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56350097/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com