当前位置: 首页 > 知识库问答 >
问题:

在thymeleaf中动态填充列表

越国源
2023-03-14

在SpringMVC项目的控制器中,我确实有一个列表,我将其放在模型映射中,如下所示。

@GetMapping("/teacher/{userId}/add_thiesis")
  public String dashboard(ModelMap model, @PathVariable Long userId) {

        List<Course> courses = courseRepo.findAll();
        model.put("courses", courses);

        String uId = String.valueOf(userId);

        ArrayList<String> questions = new ArrayList<>();
        model.put("id", uId);
        model.put("thiesis", new Thiesis());
        model.put("questions",questions);
        return "add_thiesis"; 
  }

现在我想在thymeleaf视图中使用post方法动态填充它。为此,我使用了一个JavaScript脚本。这不是所有的html代码,但为了简单起见,我只添加了JS部分。

    window.addEventListener("load", start);
    var i='0';




    var question = '<div class="form-group row">'+
                        '<label for="name" class="col-12 col-sm-4 col-form-label">Question:</label>'+
                        '<div class=" col-12 col-sm-8">'+
                            '<input type="text"'+ ' class="form-control" placeholder="Enter question here..." th:field="{questions['+i+']"}  required/><br/>'+
                        '</div>'+
                    '</div>';

    function start(){
        var plus = document.getElementById("plus");
        var minus = document.getElementById("minus");


        plus.addEventListener("click", add);
        minus.addEventListener("click", remove);
    }


    function add(){
        var addQuestion = document.getElementById("question_body");
        addQuestion.innerHTML += question;
        i++;
        console.log(i);
    }

    function remove(){
        var removeQuestion = document.getElementById("question_body");
        if(i>0){
            console.log(removeQuestion.lastChild.nodeName);
            removeQuestion.removeChild(removeQuestion.lastChild);
            i--;
            console.log(i);
        }

    }

这是测试有效的后方法。

    @PostMapping("/teacher/{userId}/add_thiesis")
public String addThiesis(Thiesis thiesis, ArrayList<String> questions)
{
    for (String question : questions) {
        Question q = new Question();
        q.setQuestion(question);
        questionService.save(q);
    }
    System.out.println("addThiesis called");
    String tmpCourse = thiesis.getTmpCourse();
    thiesisService.save(thiesis, tmpCourse);
    System.out.println(thiesis.getId());
    return "" ;
}

它向我显示了错误:错误解析模板[],模板可能不存在或任何已配置的模板解析程序都无法访问,这肯定是因为:th:field=“{questions['i']”。有没有办法动态填充数组,因为添加的问题数量是一个变量。有没有办法处理它?

共有1个答案

韶英达
2023-03-14

在GET方法中尝试以下操作:

return "add_thiesis.html";

并使用@Controller注释,如下所示:

@Controller
public class YourClass {
//
}

编辑:

也为th:字段有一个微小的错误

th:field="'*{questions['+i+']}'"
 类似资料:
  • 这是我的主页。 当用户选择一个数据中心时,页面将重定向并显示该数据中心可用的FisiHost列表。 数据中心类 这是用户在选择数据中心时重定向的视图: 视图中的每一行表示可用于所选数据中心的FiscHost对象。 FisicHost类 这是处理第二个视图的控制器方法(显示该数据中心可用FisiHost列表的视图): 如果用户单击“CREDENCIALES”按钮,将弹出一个模式并显示该FisiHos

  • 在Thymeleaf中,我可以使用 但是我不知道如何输出到表单动作属性中。 有人对Thymeleaf超文本标记语言有什么想法吗? 样例JavaSpring-MVC控制器代码

  • 我有两个下拉列表(选择元素)。第一个表示类别(从Thymeleaf模型属性填充),第二个表示所选类别的项(使用jqueryajax基于第一个select的值填充)。我希望在提交表单后保留这两个值。对于第一个下拉列表,它很简单(th:使用由Spring控制器添加的usersCategory模型属性选择): 但第二个下拉列表是动态填充的,因此html仅为: 我不知道如何仅使用Thymeleaf/Jav

  • 本文向大家介绍jQGrid动态填充select下拉框的选项值(动态填充),包括了jQGrid动态填充select下拉框的选项值(动态填充)的使用技巧和注意事项,需要的朋友参考一下 本文给大家分享一段代码关于技巧jqgrid动态填充select 下拉框的选项值,非常不多说了,直接给大家贴代码了,具体代码如下所示: 注意:要return以及async:false否则没有效果 在colModel:中设置

  • 问题内容: 我那里有点问题。当我想在JSF中填充DataTable时,我必须先创建一个模型,然后在我的视图中使用它。就像这里的 Primefaces示例一样。 现在,我必须创建DataTable来显示来自Web服务的数据。我不知道会有多少列,我也不知道它们的名称…您能推荐一些明智的解决方案吗? PS。我也不知道如何从Web服务中返回数据-尚待确定。 编辑 问题答案: 收集中代表属性的数据。的表示列

  • 当我加载我的newrecord视图时,它应该封存状态表中的所有记录,并填充到select元素中?。 当我从select fatch中选择state时,该状态的所有dstrict列表?。 当我在编辑模式下打开相同的记录时,状态和区域列表显示其默认值?。 模型 Thymeleaf视图