首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring + Tiles2 - put-attribute from model?

Spring + Tiles2 - put-attribute from model?
EN

Stack Overflow用户
提问于 2012-01-04 15:03:04
回答 2查看 2.7K关注 0票数 1

tl;dr -我希望在我的tiles定义中基于传递给tiles中的视图的单个模型来设置put-attribute

我正在尝试创建一个页面来显示使用spring和tiles的用户。现在,我的页面可以很好地获取模型,但我希望页面的标题包含用户名(它必须从模型中获取)。我在下面的代码中包含了一些摘录:

tiles.xml:

代码语言:javascript
复制
<definition name="baseLayout" template="/WEB-INF/jsp/layout/layout.jsp">
    <put-attribute name="title" value="FitterBlog" />
    <put-attribute name="header" value="/WEB-INF/jsp/layout/header.jsp" />
    <put-attribute name="nav" value="/WEB-INF/jsp/layout/nav.jsp" />
    <put-attribute name="body" value="" />
    <put-attribute name="footer" value="/WEB-INF/jsp/layout/footer.jsp" />
    <put-attribute name="ads" value="/WEB-INF/jsp/layout/ads.jsp" />
    <put-attribute name="css-layout" value="/FitterBlog/resources/css/layout.css" />
</definition>
<definition name="user/display" extends="baseLayout">
    <put-attribute name="title" value="FitterBlog - ${user.username}" />
    <put-attribute name="body" value="/WEB-INF/jsp/user/display.jsp" />
</definition>

正如您所看到的,我已经尝试使用与在jsp中相同的语法来显示用户名。即。我尝试使用${user.username}显示用户名,但这不起作用,我只是在标题中显示文本"${user.username}“,而不是实际的用户名。

display.jsp:

代码语言:javascript
复制
//output the username from the user model, this works fine
${user.username}

UserController.java

代码语言:javascript
复制
@RequestMapping(value="display/**")
public ModelAndView displayUser(@ModelAttribute("user") User user, BindingResult result) {
    //TODO
    //retrieve user number from the URL
    //retrieve user from database
    //display user details
    user.setUsername("Awesome username!");
    return new ModelAndView("user/display", "user", user);
}

正如您所看到的,我仍然处于繁重的开发阶段,目前我自己在user对象上设置用户名(而不是从数据库中获取),但这并不是重点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-05 07:12:12

在阅读了几个不同的站点(另外,感谢Ralph的链接,它给了我一个开始的地方)之后,我找到了一个解决方案。

基本上,我需要做的是编辑我的DTD以使用2.1版,并使用表达式put-attribute而不是value put-attribute。下面是tiles.xml文件的相关部分:

代码语言:javascript
复制
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">

<definition name="user/view" extends="baseLayout">
    <put-attribute name="title" expression="FitterBlog | ${user.username}" />
    <put-attribute name="body" value="/WEB-INF/jsp/user/view.jsp" />
</definition>
票数 2
EN

Stack Overflow用户

发布于 2012-01-04 16:47:29

请参阅tiles文档的这一部分:Expression Language support

看起来您需要先启用EL-Support。

我知道这不是一个完整的解决方案,但我希望这个提示能帮助解决这个问题。--如果有帮助,请发布您找到的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8723190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档