我正在学习Spring,但它令人困惑。
我有一个singleton bean:
@Component
public class PuzzleUtil {
@Bean
@Scope("singleton")
public PuzzleUtil puzzleUtil() {
return new PuzzleUtil();
}
public ArrayList<String> getCategories() {
// ...
}
}
在我的Web应用程序类中,当我加载索引页面时,我为类别设置了一个属性:
@Controller
@SpringBootApplication
public class MathPuzzlesWebApplication extends SpringBootServletInitializer {
@Autowired
private PuzzleUtil puzzleUtil;
@GetMapping("/index.html")
public String index(Model model) {
model.addAttribute("categories", puzzleUtil.getCategories());
return "index";
}
// ...
}
现在,我可以访问index.html模板中的categories数组:
<table>
<th:block th:each="category: ${categories}">
<tr>
<td th:text="${category}"></td>
</tr>
</th:block>
</table>
一切按计划进行。
但是,似乎在我的控制器类中添加属性到模型是一个额外的步骤。bean是一个单例,所以我认为我应该能够直接从模板访问它。我尝试了这个:
<th:block th:each="category: ${puzzleUtil.categories}">
但是,我得到一个错误:
EL1007E: Property or field 'categories' cannot be found on null
是我错过了什么,还是我不可能做我想做的事情?
1条答案
按热度按时间2wnc66cl1#
尝试在thymeleaf中使用带bean的@符号