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

胸腺:每次修复

隆扬
2023-03-14

我正在尝试为我的站点使用th: each函数,以查找我数据库中的所有狗,并使用以下代码。在我的控制器中,我有:

@Controller
public class DogController {

private DogDatabase database = new DogDatabase();
@RequestMapping(value = "/allDogs", method = RequestMethod.GET)
public String getAllDogs(Model model)
{
    ArrayList<Integer> ids = database.getAllIDs();
    System.out.println(ids.size());
    Dog[] dogs = new Dog[ids.size()+1];

    for(int i = 0; i < ids.size(); ++i)
    {
        dogs[i] = database.getDog(ids.get(i));
    }
    model.addAttribute("dogs", dogs);

    return "getAllDogs";
}

在这个for循环之后,我对数组中的每个对象进行了println,并验证了我的所有dog对象都是有效的且不为null。在验证数组是否正确后,我将其作为模型传递,并尝试在html中获取它。当前的问题是,当我转到html时,它什么也不显示。我没有收到任何thymeleaf错误,只是一个空白屏幕。附件是我的html代码,我在其中调用th:each

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>All Dogs</title>
</head>

<body>
    <table>
        <th:block th:each="dog : ${dogs}">
            <tr>
                <td>Name: </td>
                <td th:text="${dog.name}">Name</td>
            </tr>
        </th:block>
    </table>
</body>
</html>

编辑一和二:编辑是为了修复错误,这不在我的代码中

编辑三:我尝试在迭代器中切换dog和dogs(如上面的代码所示),但现在我得到了一个错误,即出现了“异常评估SpringEL表达式:”dog。名称“(模板:“getAllDogs”-第13行,第21列)”

然而,这并没有意义,因为我用的是狗。名称,而getName()在Dog类中是公共的。根据要求,我将添加我的狗类:https://pastebin.com/Lknc8dtZ

共有2个答案

夏奕
2023-03-14

这里没有理由使用狗[]的数组而不是列表

@RequestMapping(value = "/allDogs", method = RequestMethod.GET)
public String getAllDogs(Map<String, Object> model) {
    List<Dog> dogs = database.getAllIDs()
            .stream()
            .map(id -> database.getDog(id))
            .collect(Collectors.toList());
    model.put("dogs", dogs);
    return "getAllDogs";
}

此外,您不需要额外的

<table>
    <tr th:each="dog : ${dogs}">
        <td>Name: </td>
        <td th:text="${dog.name}">Name</td>
    </tr>
</table>

唐骏祥
2023-03-14

我认为问题在于:

<th:block th:each="dogs : ${dog}">

在控制器中,您正在将Dog[]数组绑定到变量“dogs”:

model.addAttribute("dogs", dogs);

因此,在模板中,您应该像这样迭代:

<th:block th:each="dog : ${dogs}">
            <tr>
                <td>Name: </td>
                <td th:text="${dog.name}">Name</td>
            </tr>
</th:block>

要查找dogs数组中的每只狗:)

 类似资料:
  • 我想做一些像 在百里香叶中。我知道有一个价值观,我要做的就是 如何在Thyemleaf的select选项中传递两个值。

  • 我的PDF包含一个文本形式的带有连字符符号的URL。当我通过标记直接从PDF复制URL时,当连字符位于行的末尾时,符号在粘贴后消失。 我有以下html: 但复制粘贴后,我得到的url没有连字符:https://sec2mms.hansatonich.at/test.t.ozkq/ 我错过了什么?

  • 我有这个密码; 其中,是存储在属性文件中的“子类型”的国际化字符串。所以我可以看出i18n设置正确。但是,我无法确定替换h6元素中的字符串子类型的语法。二者都 并给出语法错误。有人能给我指一下正确的方向吗。

  • 我正在使用Spring Boot 1.2.7和Thymeleaf。 所有html页面都在文件夹中,当我说

  • 我正在尝试在表单中创建下拉列表。我的用户输入的文本输入显示出来,但是,我的枚举下拉列表没有列出值。我知道这里还有其他关于同一主题的帖子(我读过),但似乎仍然无法显示下拉列表。有人能帮我吗?这就是我尝试过的。。。 我还尝试了基于此StackOverflow Post...如何使用Spring和Thymeleaf在下拉列表中显示所有可能的枚举值? 这使下拉列表显示出来,但没有显示类型列表作为可选选项。

  • 我使用thymeleaf分割我的模板在头/主/脚部分。为了在一些页面上包含样式表和javascript(但不是在其他页面上),我使用了这里解释的片段表达式。 所以我的头。html看起来像: 例如,在我的主页中使用了索引。html格式如下: 这工作正常。脚本和链接标记显示在结果页面的标题中。不过,偶尔我希望在正文的末尾有脚本(就在