我控制器收集的信息是這樣的:我如何使用Thymeleaf
@ModelAttribute("adminMenu")
public Collection<Menu> getAdminMenu(HttpSession session, HttpServletRequest request) {
Collection<Menu> menuCollection = this.stormfallService.findMenuByType("A", "A");
log.debug("The collection for admin has " + menuCollection.size() + " records");
session.setAttribute("adminMenu", menuCollection);
/*Menu menu;
Iterator<Menu> itr = menuCollection.iterator();
while (itr.hasNext()) {
menu = (Menu)itr.next();
log.debug("The id = " + menu.getId());
log.debug("The menu text is " + menu.getMenuText());
log.debug("The menu type is " + menu.getMenuType());
log.debug("The menu url is " + menu.getMenuUrl());
log.debug("The menu sort order is " + menu.getSortOrder());
log.debug("The menu status is " + menu.getStatus());
}*/
return menuCollection;
//return null;
}
我認爲這是正確的,但如果沒有,告訴我應該是什麼。
我的片段是這樣的:
<div th:fragment="sidebar" class="sidebar" id="textbar">
<h4>Admin Functions</h4>
<ul class="menu">
<!-- li th:each="menu,rowStat : ${adminMenu}" -->
<li th:each="menu,rowStat : #{session.adminMenu}">
<a href="#" th:href="${menu.menuUrl}" th:text="${menu.menuText}">Some Admin Text</a></li>
</ul>
<h4>User Functions</h4>
<ul class="menu">
<!-- li th:each="menu,rowStat : ${userMenu}" -->
<li th:each="menu,rowStat : #{session.userMenu">
<a href="#" th:href="${menu.menuUrl}" th:text="${menu.menuText}">Some User Text</a></li>
</ul>
<h4>Tools</h4>
<ul class="menu">
<li><a href="#">Change Password</a></li>
<li><a href="#">Logout</a></li>
</ul>
</div>
當我不使用會議上,註釋掉的代碼建立菜單,但是當它進入到其他頁面,菜單消失。因此,它需要在會話中。
我得到這個新的代碼以下錯誤:
HTTP狀態500 - 請求處理失敗;嵌套異常是org.thymeleaf.exceptions.TemplateProcessingException:異常評估SpringEL表達: 「menu.menuUrl」(佈局:141)
類型異常報告
消息請求處理失敗;嵌套異常是org.thymeleaf.exceptions.TemplateProcessingException:異常評估SpringEL表達:「menu.menuUrl」(佈局:141)
描述服務器遇到阻止其完成此請求一個內部錯誤。
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "menu.menuUrl" (layout:141)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
root cause
org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "menu.menuUrl" (layout:141)
org.thymeleaf.spring3.expression.SpelVariableExpressionEvaluator.evaluate(SpelVariableExpressionEvaluator.java:153)
org.thymeleaf.standard.expression.VariableExpression.executeVariable(VariableExpression.java:149)
org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:59)
org.thymeleaf.standard.expression.Expression.execute(Expression.java:103)
org.thymeleaf.standard.expression.Expression.execute(Expression.java:133)
org.thymeleaf.standard.expression.Expression.execute(Expression.java:120)
org.thymeleaf.standard.processor.attr.AbstractStandardSingleAttributeModifierAttrProcessor.getTargetAttributeValue(AbstractStandardSingleAttributeModifierAttrProcessor.java:67)
org.thymeleaf.spring3.processor.attr.SpringHrefAttrProcessor.getTargetAttributeValue(SpringHrefAttrProcessor.java:68)
org.thymeleaf.processor.attr.AbstractSingleAttributeModifierAttrProcessor.getModifiedAttributeValues(AbstractSingleAttributeModifierAttrProcessor.java:59)
org.thymeleaf.processor.attr.AbstractAttributeModifierAttrProcessor.processAttribute(AbstractAttributeModifierAttrProcessor.java:61)
org.thymeleaf.processor.attr.AbstractAttrProcessor.doProcess(AbstractAttrProcessor.java:87)
org.thymeleaf.processor.AbstractProcessor.process(AbstractProcessor.java:212)
org.thymeleaf.dom.Node.applyNextProcessor(Node.java:973)
org.thymeleaf.dom.Node.processNode(Node.java:928)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.Document.process(Document.java:93)
org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1155)
org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)
org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)
org.thymeleaf.spring3.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
org.thymeleaf.spring3.view.ThymeleafView.render(ThymeleafView.java:190)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
root cause
org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 5): Field or property 'menuUrl' cannot be found on object of type 'java.lang.String'
org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:246)
org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:112)
org.springframework.expression.spel.ast.PropertyOrFieldReference.access$000(PropertyOrFieldReference.java:43)
org.springframework.expression.spel.ast.PropertyOrFieldReference$AccessorLValue.getValue(PropertyOrFieldReference.java:87)
org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:82)
org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:93)
org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:94)
org.thymeleaf.spring3.expression.SpelVariableExpressionEvaluator.evaluate(SpelVariableExpressionEvaluator.java:138)
org.thymeleaf.standard.expression.VariableExpression.executeVariable(VariableExpression.java:149)
org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:59)
org.thymeleaf.standard.expression.Expression.execute(Expression.java:103)
org.thymeleaf.standard.expression.Expression.execute(Expression.java:133)
org.thymeleaf.standard.expression.Expression.execute(Expression.java:120)
org.thymeleaf.standard.processor.attr.AbstractStandardSingleAttributeModifierAttrProcessor.getTargetAttributeValue(AbstractStandardSingleAttributeModifierAttrProcessor.java:67)
org.thymeleaf.spring3.processor.attr.SpringHrefAttrProcessor.getTargetAttributeValue(SpringHrefAttrProcessor.java:68)
org.thymeleaf.processor.attr.AbstractSingleAttributeModifierAttrProcessor.getModifiedAttributeValues(AbstractSingleAttributeModifierAttrProcessor.java:59)
org.thymeleaf.processor.attr.AbstractAttributeModifierAttrProcessor.processAttribute(AbstractAttributeModifierAttrProcessor.java:61)
org.thymeleaf.processor.attr.AbstractAttrProcessor.doProcess(AbstractAttrProcessor.java:87)
org.thymeleaf.processor.AbstractProcessor.process(AbstractProcessor.java:212)
org.thymeleaf.dom.Node.applyNextProcessor(Node.java:973)
org.thymeleaf.dom.Node.processNode(Node.java:928)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:654)
org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:637)
org.thymeleaf.dom.Node.processNode(Node.java:947)
org.thymeleaf.dom.Document.process(Document.java:93)
org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1155)
org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)
org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)
org.thymeleaf.spring3.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
org.thymeleaf.spring3.view.ThymeleafView.render(ThymeleafView.java:190)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.42 logs.
Apache Tomcat/7.0.42
任何幫助,將不勝感激。
這會有所幫助,但現在我得到: 類型異常報告 消息請求處理失敗;嵌套的例外是org.thymeleaf.exceptions.TemplateProcessingException:無法解析爲每個「菜單,rowStat:$ {session.userMenu」(佈局:146) – Crowdness
沒關係......我留下了最後}。修正了它的工作。謝謝!!!! – Crowdness