首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

Tapestry 5 佈局組件參數傳遞實戰:@Parameter 與 @Property 註解應用

     編輯:關於JSP

Tapestry 5 佈局模板動態參數綁定指南

Tapestry 5 的佈局組件允許在模板中定義可復用的頁面結構,並透過參數實現標題、關鍵字、描述等動態替換。本文示範如何在佈局類中聲明參數並在使用頁面傳值。

1. 佈局模板定義

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:t="https://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<head>
    <meta name="keywords" content="${ks}"/>
    <meta name="description" content="${desc}"/>
    <title>${title}</title>
</head>
<body>
    <t:body/> <!-- 內容插入點 -->
</body>
</html>

2. 佈局組件 Java 類

使用 @Parameter 聲明參數,@Property 暴露為唯讀屬性供模板讀取:

import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.BindingConstants;

public class Layout {
    @Parameter(defaultPrefix = BindingConstants.LITERAL, name = "title", required = true)
    @Property(write = false)
    private String title;

    @Parameter(defaultPrefix = BindingConstants.LITERAL, name = "ks")
    @Property(write = false)
    private String keywords;

    @Parameter(defaultPrefix = BindingConstants.LITERAL, name = "desc")
    @Property(write = false)
    private String description;
}
  • defaultPrefix = BindingConstants.LITERAL:預期直接傳入字面值而非表達式。
  • required = true:強制調用方必須提供該參數。
  • @Property(write = false):生成 getter 供模板讀取,不生成 setter。

3. 使用佈局的頁面模板

<div t:type="Layout" xmlns:t="https://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
     title="這裡寫你的標題" ks="關鍵字" desc="頁面描述">
    XXX <!-- 頁面具體內容 -->
</div>

4. 重新部署驗證

重啟應用服務器後訪問頁面,瀏覽器標題欄將顯示傳入的「這裡寫你的標題」,meta 標籤也會相應更新。

進階提示

  • 參數支援 OGNL 表達式(如 title="user.name"),需移除 LITERAL 前綴。
  • 可定義預設值:@Parameter(value = "預設標題")。
  • 佈局組件可巢狀嵌套,構建多層頁面結構。

掌握參數綁定機制,能讓 Tapestry 5 的佈局組件真正實現「寫一次,到處復用,動態配置」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved