在我目前的春天啓動的項目的同時,我有這樣的thymeleaf代碼:迭代兩個列表與thymeleaf
<th:block th:each="item : ${menu}">
...
<a th:href="@{/__${menu2}__/listagem}">
<i class="icon-asterisk"></i>
<span th:utext="${item}"></span>
</a>
...
<th:block>
在那裏我想在一個循環th:each
迭代兩個列表(menu
和menu2
)。對於menu2
我試試這個:
${menu2[itemStat.index]}
但我得到的錯誤:
org.springframework.expression.spel.SpelEvaluationException: EL1012E:(pos 5): Cannot index into a null value
什麼是訪問循環內第二個下拉列表的正確方法?
UPDATE
控制器:
@ModelAttribute("menu") public List<String> menu() throws Exception { return ApplicationClasses.lista_classes_projeto(); } @ModelAttribute("menu2") public List<Class<?>> menu2() throws Exception { return ApplicationClasses.lista_classes_projeto_2(); }
ApplicationClasses:
public static List<String> lista_classes_projeto() throws ClassNotFoundException { Locale currentLocale = Locale.getDefault(); ResourceBundle messages = ResourceBundle.getBundle("messages", currentLocale); List<String> lista = new ArrayList<String>(); ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false); scanner.addIncludeFilter(new AnnotationTypeFilter(Form.class)); for (BeanDefinition bd : scanner.findCandidateComponents("com.spring.loja.model")) { Class<?> clazz = Class.forName(bd.getBeanClassName()); lista.add(messages.getString(clazz.getSimpleName())); } return lista; } public static List<Class<?>> lista_classes_projeto_2() throws ClassNotFoundException { List<Class<?>> lista = new ArrayList<Class<?>>(); ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false); scanner.addIncludeFilter(new AnnotationTypeFilter(Form.class)); for (BeanDefinition bd : scanner.findCandidateComponents("com.spring.loja.model")) { Class<?> clazz = Class.forName(bd.getBeanClassName()); lista.add(clazz); } return lista; }
向我們展示本節的完整代碼,因爲您目前有空白,我們必須根據它們進行假設,例如, itemStat在哪裏填充?列表還包含數據的對象還是非對象? – Aeseir
@Aeseir該部分沒有任何其他相關代碼會改變代碼的理解。我在控制器中添加了關於thymeleaf代碼迭代數據源的Java代碼。 –