2012-01-04 5 views
1

TL; DRは - 私は春とタイルを使用してユーザーを表示するページを作成しようとしているタイルSpring + Tiles2 - モデルからのput-attribute?

にビューに渡された個々のモデルに基づいて、私のタイル定義のPUT-属性を設定します。今、私のページはモデルをうまく使いますが、ページのタイトルにユーザー名(モデルから取得する必要があります)を含める必要があります。

tiles.xml::私は以下の私のコードからいくつか抜粋含めましたあなたが見ることができるように

<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:

//output the username from the user model, this works fine 
${user.username} 

UserController.java

@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); 
} 

あなたが見ることができるように、私は重いまだ開発中だと、現在のユーザーに自分をオブジェクト(の代わりにユーザー名を設定しますそれをデータベースから取得する)が、それはポイントの横にある。

答えて

2

いくつかの異なるサイトを読んだあと(リンクRalphのおかげで、私には始める場所が与えられました)、私は解決策を見つけました。

基本的には、バージョン2.1を使用するようにDTDを編集し、値のput属性の代わりに式のput属性を使用する必要がありました。次に、tiles.xmlファイルの関連部分を示します。

<!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> 
0

は、タイルのドキュメントのこの部分を参照してください。Expression Language support

あなたが最初のEL-サポートを有効にする必要がありますように見えます。

私はこれが完全な解決策ではないことを知っていますが、このヒントが問題の解決に役立つことを願っています。 - それが役に立ったら、見つけた解決策を投稿してください。