6

テンプレートフレームワークとして、Struts2.1.6と一緒にタイル2.0.6を使用しています。私は簡単なcmsページを書いていますが、ユーザーが各htmlページのタイトルを定義できるようにしたいと思います。

私はこのようなタイトルの定義を持っています

    <definition name="base" template="/WEB-INF/jsp/templates/base.jsp">
        <put-attribute name="title" value=" "/>
        <put-attribute name="header" value="/WEB-INF/jsp/templates/header.jsp"/>  
        <put-attribute name="content" value="dummy"/>
        <put-attribute name="footer" value="/WEB-INF/jsp/templates/footer.jsp"/>   
        <put-attribute name="search" value="/WEB-INF/jsp/search.jsp"/>
    </definition>    
    <definition name="staticview" extends="base">
        <put-attribute name="title" value=" - Static"/>
        <put-attribute name="content" value="/WEB-INF/jsp/static/view.jsp"/>
    </definition>  

タイトルをjspにする代わりに、後のjsp属性(view.jspなど)のheader.jspのタイトル(文字列)を動的にオーバーライドする方法はありますか。または、ELを使用してさらに1ステップ

<put-attribute name="title" value="%{title}"/>

ストラットognlのタイトルを動的に取得します。

お知らせ下さい

前もって感謝します

4

6 に答える 6

3

ビューページでは、これが必要です-

<title><tiles:getAsString name="title" /></title>

上記はあなたにページのタイトルを取得します。ただし、ページタイトルを動的にする必要があるため、tiles.xml構成で追加しました

<definition name="page1" extends="base">
    <put-attribute name="title" value="Page 1"/>
    <put-attribute name="content" value="/WEB-INF/jsp/page1.jsp"/>
</definition>
<definition name="page2" extends="base">
    <put-attribute name="title" value="Page 2"/>
    <put-attribute name="content" value="/WEB-INF/jsp/page2.jsp"/>
</definition>

これを入力すると、静的に見えるようになります。ただし、そのページを表示するたびに、タイトルはそのページで同じである必要があります。この情報をtiles.xmlに置くのに最適な場所です。

私にとってはタイトルそのものではありませんでしたが、別のページ見出しが必要でした。ページのパスを取得してページの見出しを決定するためにコンテキスト属性を見たくありませんでした。だから、これは私のために働き、すべてを緩く結合し続けました。

これは、ページごとに異なる動的な見出しなどが必要な場合に機能します。

于 2013-02-28T04:36:19.040 に答える
1

私はこれを試しました、そしてそれは働きます。

Code1

<tiles:putAttribute name="title"> 
          You String
</tiles:putAttribute>

コード2

<tiles:insertAttribute name="title" />

ただし、code1はcode2の前に実行する必要があります。

于 2012-03-26T17:07:48.710 に答える
1

タイルの定義は次のようにします。

    <put-attribute name="title" value=""/>

アクションクラスのプロパティとしてタイトルを追加します。

そして、view.jspページでこれを使用します:

    <tiles:insertDefinition name="staticview">
        <tiles:putAttribute name="title"> 
            ${title} <%--OR, <s:property value="title"/>--%>
        </tiles:putAttribute>
        <%--Remainning content--%>
    </tiles:insertDefinition>
于 2011-09-09T06:24:11.820 に答える
0

私の意見では、タイル定義のexpression代わりにを使用valueして${title}を渡すのが最善の解決策です。ただし、残念ながら、各ビューで明示的に行う必要があります。詳細については、http://symfony-world.blogspot.com/2013/02/dynamic-attribute-values-with-apache.htmlをご覧ください。

于 2013-02-14T22:18:46.667 に答える
0

この簡単な解決策を他の場所で見つけました:

通常どおりのタイル属性定義:

 <put-attribute name="title"  value="welcome.title"/>

jspページでは、属性が最初にインポートされ、次にstrutsタグで使用できます。

<tiles:importAttribute name="title" />
<title><s:text name="%{#attr['title']}"/></title> 
于 2013-08-13T10:25:58.250 に答える
-1

アクションクラスのリクエストにタイトルを追加します。テンプレートのJSPコードは次のとおりです(タイル1)。

<title>
    <tiles:getAsString name="title"/>
    <%-- add additional title (if found) --%>
    <logic:present scope="request" name="title"><bean:write scope="request" name="title"/></logic:present>
</title>
于 2009-11-20T19:11:53.520 に答える