首页 > 解决方案 > 提交后无法显示选定的下拉值

问题描述

单击提交后,我无法显示选定的下拉值。

<form action="#" th:action="@{/page1/send}" th:object="${val}" method="post">
    <select class="form-control" name="action" id="action" th:value="${value}">
           <option th:selected="'ABC' == ${value}">ABC</option>
           <option th:selected="'XYZ' == ${value}">XYZ</option>                 
    </select>
 </form>

在 controller.java 中:

@RequestMapping("/page1/send")
public String send(Values val, Model model) { 
String value = val.getValue();                             
    model.addAttribute("value",value);
    return "page1";
}

当我选择 XYZ 并提交时,它再次恢复为 ABC!

标签: htmlspringspring-bootspring-mvcthymeleaf

解决方案


当我选择 XYZ 并提交时

我没有在您的表单中看到提交按钮。但是我明白你的要求。假设 page1.html 首先由一些控制器方法加载,如下所示

@GetMapping(path = "/")
    public ModelAndView home()
    {
        ModelAndView mav = new ModelAndView();
        mav.addObject("value", "XYZ");
        mav.setViewName("page1");
        return mav;
    }

这服务于以下 html 页面表单

<form action="#" th:action="@{/page1/send}"  method="post">
    <select class="form-control" name="action" id="action">
        <option th:selected="'ABC' == ${value}" value="ABC">ABC</option>
        <option th:selected="'XYZ' == ${value}" value="XYZ">XYZ</option>
    </select>
    <input type="submit" value="submit"/>
</form>

现在我可以读取提交的下拉列表的值并将其从控制器方法发送回页面

@RequestMapping("/page1/send")
    public String testSubmit(@RequestParam("action") String action, Model model) {
        model.addAttribute("value",action);
        return "page1";
    }

让我知道这是否有帮助。


推荐阅读