`
jd20800991
  • 浏览: 40982 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Tapestry4学习指引(一)

阅读更多

常识:
     "@"表示访问类的静态变量或静态方法. 例如:value="ognl:@com.ttdev.shop.ProductDetails@ADD_TO_CART_BUTTON"/>
 


一。tapestry模板中用到的组件有两种,一种是隐含组建常用jwcid="@XXX"的格式调用;另外一种是显式声明式组建,常用jwcid="XXX"的方式调用;

二。tapestry的组件中:有的组件使用了本身的body,有的没有使用本身的body. 凡是在tapestry组件规范中声明allow-body属性为allowed 的,即该组件使用了本身的body.否则则没有使用本身的body.
   注意:不能在allow-body属性为removed 的组件中嵌套其他的组件,否则tapestry会报错。

三。组件的id。
  对于显式组件其id就是该组件的名称。对于隐含式组件如果没有在"@"号前指定id,则为匿名的组件,此时tapestry会在组件名称前加上"$"符号,例如第一个匿名@Insert组件会被带上默认的id:"$Insert" ,在这之后的@Insert组件则会依次默认为“$Insert$0”, “$Insert$1”, 等;

三。监听方法的可以带参数,也可以不带参数;其返回类型可以是void,string,或实现了IPage接口的object
几种可用的监听方法有:
  public type method(parameters)
  public type method(IRequestCycle cycle, parameters)
  public type method()
  public type method(IRequestCycle cycle)

四,input组件输入值的验证
   tapestry3中的验证仅仅限于vaildField组件,但在tapestry4.o中,可以面向所有的input组件。


五。属性注入:
 包括:元数据注入,对象注入,页面注入,脚本注入,状态注入,
 
  1。页面注入常用于监听方法中(例如):
  <inject property="detailsPage" type="page" object="Details"/>
  public abstract Details getDetailsPage();
 
  public IPage doShowDetails(long productId)
  {
    Details details = getDetailsPage();
   
    details.setProductId(productId);
   
    return details;


六.tapestry中的临时对象和持久对象
    transient state临时状态 (state that is only needed during the actual processing of the request)
    persistent state持久状态 (state that should be available during the processing of this and subsequent requests).
    object pool 对象池 :Tapestry uses an object pool to store constructed page instances. As a page is needed, it is removed from the page pool. If there are no available pages in the pool, a fresh page instance is constructed.

    在tapestry3.0及早期的版本中,对于持久的状态都保存在httpSession里面。但是从tapestry4.开始,可以放在httsession中,也可以放在Client中;

七.tapestry4中属性元素的声明
     从tapestry4.0开始,在.page文件中声明的属性不需要规定其类型;tapestry4会自己在.java文件中寻找与该属性对应的getter,setter方法,然后根据getter,setter方法的操作类型,来确定属性的类型;


八. tapestry中使用HiveMind
      tapestry和HiveMind有密切的联系,可以将hiveMind1.1邦定到tapestry4.0,可以用HiveMind管理tapestry : 用于将属性或服务通过tapestry的<inject/>注入到tapestry实例中;
       举例说明具体用法:
          1. 在项目中配置好 HiveMind.xml配置文件,HiveMind.xml的文件结构可以是:META-INF/hivemodule.xml  或 /WEB-INF/applicationId/hivemodule.xml  或 /WEB-INF/hivemodule.xml
    (如下片断):
               <!-- 注册聊天服务 -->
  <contribution configuration-id="tapestry.services.ApplicationServices">
   <service name="chat" object="service:ChatService"/>
  </contribution>
  
  <!-- 聊天服务 -->
  <service-point id="ChatService" interface="org.apache.tapestry.engine.IEngineService">
   <invoke-factory>
    <construct class="com.ce.dnaq.chat.qiantai.XChatService">
      <set-object property="responseRenderer" value="infrastructure:responseRenderer"/>
     <set-object property="response" value="infrastructure:response"/>
     <set-object property="linkFactory" value="infrastructure:linkFactory"/>
    </construct>
   </invoke-factory>
  </service-point>
 
          2.在需要该服务的.page文件中声明
       <inject property="service" object="engine-service:chat" />
     

   3.在对应的java文件中:  
      /**注入服务*/
      public abstract IEngineService getService();
            
   解释说明:  在.page文件中的前缀"engine-service:" 是tapestry扩展了HiveMind的服务的名称; "engine-service:chat"表示注入tapestry的chat服务,该服务(即:chart)在HiveMind.xml配置文件中已经配置好。
     
      tapestry扩展的服务名称有:"app-property , engine-service ,global-property ,infrastructure"
              各个作用说明如下:
         (1).app-property  :
       用于 The application specification's <meta> properties
       The servlet's <init-parameter> elements
       The servlet context's <init-parameter> elements
       The delegate property source (a <extension>)
       A HiveMind symbol
      用法示例: app-property:org.apache.tapestry.template-extension
              
        (2). engine-service :
              The locator is the name of an engine service (an instance of IEngineService).
                    用法示例: engine-service:page

               (3). global-property:
              定义在 servlet <init-parameter>, a servlet context <init-parameter>, or a HiveMind symbol. 中的全局属性名称;
      用法示例: global-property:org.apache.tapestry.disable-caching

        (4). infrastructure :
       由tapestry.Infrastructure service提供的属性, this service provides access to the key Tapestry services. 
                    用法示例: infrastructure:applicationSpecification

九. Friendly URLS 结合 HiveMind 的使用
    
     1. 在HiveMind文件中有如下配置;
         <!-- 部署FriendlyURL -->
  <contribution configuration-id="tapestry.url.ServiceEncoders">
  <direct-service-encoder id="direct" stateless-extension="direct" stateful-extension="sdirect" />
  <page-service-encoder id="page" extension="page" service="page" />
  <page-service-encoder id="external" extension="external" service="external" />
  <asset-encoder id="asset" path="/assets" />
  <extension-encoder id="ext" extension="svc" after="*" />
 </contribution>
       在web.xml中配置  <servlet-Mapping>  例如:
        <servlet-mapping>
   <servlet-name>dnaq</servlet-name>
   <url-pattern>*.page</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
   <servlet-name>dnaq</servlet-name>
   <url-pattern>*.external</url-pattern>
  </servlet-mapping>
    2.说明:
        A.  <page-service-encoder id="page" extension="page" service="page" />表示任何的.page页面访问被视为page templates对待。
     如果将其改为 <page-service-encoder id="page" extension="html" service="page" />表示将所有的对.html的访问被视为page templates对待。
  
       B.  <direct-service-encoder id="direct" stateless-extension="direct" stateful-extension="sdirect" />
          direct:表示内部组件在刷新,提交(表单)时,是否单独刷新内部组件而不刷新整个页面,一般情况下为true,及不刷新整个页面.(P250 Enjoin Web Dep开发)
          示例URL:  A typical URL might be: /admin/Menu,border.link.direct.
   表示以  .direct后缀结尾的内部组建id名称为“border.link”的组件状态是没有状态的。
   如果是以.sdirect后缀结尾,则表示是有状态的(放在httpsession范围内)。
 

       C. <asset-encoder id="asset" path="/assets" />
          在web.xml中配置<servlet-mapping>
     <servlet-name>myapp</servlet-name>
     <url-pattern>/assets/*</url-pattern>
   </servlet-mapping>
          用于asset service,asset service负责将本地资源返回给请求资源的客户端,但为了防止客户端的非法资源请求,可以在此限定可以访问的路径;本例中:即path="/assets",也就是只有在 "/assets"目录或其子目录下的资源才能被客户端所请求。例如:app/assets/image/tt.jif


十. tapestry属性配置
       tapestry属性,有的是直接在程序中声明使用,有的是JVM属性,需要在服务器中才能有效;


十一. Tapestry对象属性。(Object Properties)
      一个page有许多属性(继承自AbstractComponent或BasePage等基类),也包含许多组件和其他对象的属性. Pages是和engine相关联的, engine暴露他自身的一些属性。这些属性包括如下:
         assets(Icomponent),beans(Icomponent),bingdingNames(Icomponent),bingdings(Icomponent),body,bodyCount,components(Icomponent),changObserver(Ipage),classObserver(IEngine),container,disabled,displayName,engine,form,global,id,idPath,listeners,locate,local,location,messages,name,namespace,outputEncoding,page,propertySource,pageName,pageSource,rendering,requestCycle,scriptSource,specification,sepcification,specificationSource,vist(IEngine),vist(Ipage)等;

分享到:
评论

相关推荐

    Enjoy Web Dev With Tapestry

    本书《Enjoy Web Dev With Tapestry》不仅是一本入门指南,更是一部深入浅出的实战教程,旨在让读者在学习过程中体验到开发的乐趣。以下为本书的主要特点: 1. **易于上手**:即使是没有Servlet或JSP背景的读者也能...

    悬索大振幅三维自由振动中的非线性耦合与动态张力研究(可复现,有问题请联系博主)

    内容概要:本文通过建立严格的数学模型并结合虚拟功能量法,推导了用于分析任意悬垂弹性缆绳大振幅自由振动的三维非线性方程组。所提出的多自由度模型考虑了轴向变形效应以及动态张力响应特性,不仅适用于小挠跨比条件,还能处理显著初始挠曲情况。研究通过数值仿真方法揭示了几何非线性和内部共振现象对缆索动力行为的重要影响,特别探讨了对称和平面对称模态之间的耦合作用及其引起的动力特性变化。 适用人群:工程力学专业人员、土木工程项目研究人员、结构工程师等,尤其涉及大型桥梁及高层建筑中缆索系统的动态特性的分析与设计的专业人士。 使用场景及目标:通过对特定初位移条件下电缆系统的非线性动态响应进行建模与模拟,能够帮助工程师预测和优化电缆系统的运动轨迹,同时为理解复杂环境下如强风或者地震荷载下的桥梁等基础设施提供理论支持。 其他说明:研究成果有助于指导实际应用中关于如何减轻因共振而导致的结构破坏风险的问题;并指出未来工作中需要进一步探索的方向,例如改进现有的简化假设来更好地适应实际工况。

    Python爬虫实例,一个简单的DEMO

    使用requests和BeautifulSoup库爬取豆瓣电影Top250的基本信息

    ISO 8015-2011 英文-中文对照 产品几何技术规范( GPS ) 基础概念、原则和规则 .rar

    标题中的“ISO 8015-2011”是指国际标准化组织(International Organization for Standardization)在2011年制定的一项标准,该标准是关于产品几何技术规范(Geometrical Product Specifications, 简称GPS)的一部分。GPS是工业界用于定义和控制产品几何尺寸和形状的一系列准则,旨在确保产品的设计、制造和检测过程中的精确性和一致性。 “基础概念、原则和规则”这部分内容涵盖了ISO 8015的核心理念,包括但不限于: 1. 几何公差:ISO 8015解释了如何定义和应用几何公差,这是控制产品几何特性的重要手段。它涉及尺寸公差、形状公差、位置公差、方向公差和跳动公差等。 2. 尺寸基准:标准介绍了选择和定义尺寸基准的重要性,这些基准用于确定零件或组件的定位和测量参考。 3. 形状和位置关系:ISO 8015阐述了如何理解和表达零件表面的形状以及它们之间的位置关系,比如平面度、圆度、直线度、平行度、垂直度等。 4. 公差带:公差带是允许几何特性变化的区域,标准中详细规定了如何定义和图解公差带。 5. 控制方法:标准涵盖了各种几何特性的测量和控制方法,如接触测量、光学测量、三坐标测量机(CMM)的应用等。 6. 符号和注释:ISO 8015规定了标准的图形符号和注释方式,以便于设计者和制造者清晰地传达几何要求。 7. 可接受性准则:标准提供了判断产品是否符合几何公差要求的准则,包括最大实体条件(MMC)、最小实体条件(LMC)和其他补偿原则。 “英文-中文对照”表明这份文档提供了双语对照,方便中国用户理解和应用这个国际标准,从而提升国内产品设计和制造的质量。 尽管压缩包中包含的“1.bat”和“一键改名.bat”文件与主题内容直接关联性不强,但它们可能是辅助工具,例如批量修改文件名的脚本,帮助用户更方便地管理和使用ISO 8015的相关资料。 ISO 8015-2011是一个关于产品几何技术规范的重要标准,对工程设计、质量控制和制造流程有着深远影响。理解并应用这些原则和规则能够提高产品的精度和可靠性,降低生产成本,增强市场竞争力。。内容来源于网络分享,如有侵权请联系我删除。

    2025 年全球产品库存数据集(10K+记录,14特征)CSV

    该数据集提供了产品库存的详细快照,非常适合物流优化、电子商务分析或供应链研究。它包括关键详细信息,如产品名称、类别、价格、库存数量等,这些详细信息来自一个假设的全球供应商数据库。我在从事货运物流优化项目时编译了这个,我希望它对其他探索类似挑战的人有用! 主要特点: 14 列,涵盖商品规格、定价、库存和标签。 示例数据包括 Home Appliances 等多个类别。 非常适合数据清理实践、可视化或预测建模(例如,库存耗尽)。 可能的用例: 根据库存和有效期优化货运物流。 分析不同产品类别的定价趋势。 使用标签和评级构建推荐系统。 笔记: 日期范围从制造到到期(例如,2023-2026 年)。 某些字段(例如,产品描述)可能需要改进 - 请随时对其进行改进! 欢迎对其他数据或改进提出建议。 让我知道您如何使用它 - 我很想听听您的反馈! 列描述 Product ID:这是分配给数据集中每个产品的唯一标识符,如“93TGNAY7”。它有助于区分一项与另一项。 Product Name(商品名称):商品的名称,例如 “Laptop”(笔记本电脑)。这是项目是什么的简单标签。 Product Category(商品类别): 这告诉您商品属于哪个类别,例如“Home Appliances”(家用电器)。它将相似的项目分组在一起。 Product Description(商品描述):商品的简要描述。在示例中,它列为“Product_XU5QX”,这可能是一个占位符 - 请随意将其替换为更有意义的内容! 价格: 商品的价格(以美元为单位),例如 253.17。它显示每件物品的价值。 库存数量: 当前有货的商品数量,例如 3。它对于跟踪库存水平非常有用。 保修期:产品的保修期,以年为单位,例如 2。它表示所提供的支持期限。 商品尺寸: 商品的实际尺寸(以厘米为单位),写为“16x15x15 厘米”(长 x 宽 x 高)。这有助于物流和存储规划。 生产日期: 商品的生产日期,例如“2023-01-01”。它便于跟踪产品年龄。 有效期: 商品到期时间(如适用),例如“2026-01-01”。这对于管理保质期非常有用。 SKU:库存单位的缩写,这是类似于“8NMFZ4”的代码,用于在库存系统中跟踪产品。 商品标签: 描述商品的标签列表(以逗号分隔),例如“VNU,NZ6”。这些可以表示功能、关键字或类别。 颜色/尺寸变体: 商品的可用颜色和尺寸,例如“绿色/大号”。它显示了客户可以选择的选项。 商品评分: 买家评分(满分 5 分),例如 2。它反映了反馈或质量感知。

    灵通LD3000 dmr对讲机写频软件

    灵通LD3000 dmr对讲机写频软件

    基于Wav2Lip384的AI主播项目整合包

    开源项目整合包 更多内容可以查阅 项目源码搭建介绍: 《我的AI工具箱Tauri+Django开源git项目介绍和使用》https://datayang.blog.csdn.net/article/details/146156817 图形桌面工具使用教程: 《我的AI工具箱Tauri+Django环境开发,支持局域网使用》https://datayang.blog.csdn.net/article/details/141897682

    Java项目,二手资源交易系统,欢迎学习

    Java项目,二手资源交易系统,欢迎学习。

    基于springboot框架的基于Javaweb的电影院购票系统的设计与实现(Java项目编程实战+完整源码+毕设文档+sql文件+学习练手好项目).zip

    传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装电影院购票系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,电影院购票系统的有效运用可以帮助管理人员准确快速地处理信息。 电影院购票系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现电影院购票系统的功能。其中管理员管理用户,新闻公告。 电影院购票系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,电影院购票系统都可以轻松应对。 关键词:电影院购票系统;SpringBoot框架,系统分析,数据库设计

    【毕业设计】基于uniapp微信小程序志愿者活动报名在线试卷考试系统【源码+论文+答辩ppt+开题报告+任务书】.zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    SAP SD-Class 17 SAP Error Message numbers and controls.mp4

    SAP SD-Class 17 SAP Error Message numbers and controls.mp4

    网络安全中CSRF与XSS攻击及其防护措施详解

    内容概要:本文主要介绍了两种重要的网络攻击手段——CSRF(跨站请求伪造)和XSS(跨站脚本攻击)。首先阐述了CSRF的定义、形成机制以及防范办法,其中包括设置Cookie属性SameSite值为严苛级别或者验证来源请求头部字段Referer/Origin;再介绍了一次性和敏感业务的两步确认法以及采用非Cookie形式的身份标识Token。关于XSS,文中详述三种具体表现形式即存储型、反射型与基于DOM的XSS,还讲解了应对这种风险的有效举措,例如检验与编码用户提交的信息,在服务器回应客户端的数据里加入相关保护性HTTP首部字段,选择更为保险的DOM API接口调用方式以及对Cookies采取额外安全性设定。 适用人群:从事信息安全维护工作的专业人员,尤其涉及Web应用防护的技术团队成员。 使用场景及目标:当用户构建自己的web应用程序时,理解和掌握这两种威胁的运作机理有助于提高自身项目抵御此类恶意行为的能力,保证用户数据安全。 其他说明:了解如何有效地预防这两种类型的攻击不仅对提升个人技能有帮助,同时也能增强所开发系统的健壮性。由于互联网环境复杂多变,不断关注最新的攻防动态十分必要。

    Invoke-WmiCommand.zip

    Invoke-WmiCommand

    CNN-master.zip

    CNN相关以及垃圾分类数据集

    01 DNS DHCP Telnet综合实验 毛佳宇(1).docx

    01 DNS DHCP Telnet综合实验 毛佳宇(1).docx

    建模大赛-风电机组强非线性气动特性拟合建模: 基于神经网络和多项式算法的精确快速计算方案

    建模大赛-风电机组强非线性气动特性拟合建模: 基于神经网络和多项式算法的精确快速计算方案

    纯电动汽车动力经济性仿真研究:Cruise与Simulink联合应用下的整车模型及策略解析,纯电动车辆动力经济性仿真研究:Cruise与Simulink联合仿真平台的应用,涵盖BMS、再生制动及电机驱

    纯电动汽车动力经济性仿真研究:Cruise与Simulink联合应用下的整车模型及策略解析,纯电动车辆动力经济性仿真研究:Cruise与Simulink联合仿真平台的应用,涵盖BMS、再生制动及电机驱动策略的详细解析与注释模型,Simulink整车控制器vcu应用层模型,实车在用的,支持仿真和生成 文件分类明确,每个普通功能和核心功能建有单独的库,存放在文件夹里。 有相应的表格,描述了信号的意思。 ,Simulink VCU应用层模型;实车应用;支持仿真与生成;文件分类明确;功能库分普通与核心;信号描述表格。,Simulink VCU应用层模型:实车仿真与功能库管理

    Maxwell电机与Simplorer联合仿真教程:电路搭建及矢量控制SVPWM算法实践,自定义电机模型替换指南,Maxwell电机与Simplorer联合仿真教程:电路搭建及矢量控制SVPWM算法实

    Maxwell电机与Simplorer联合仿真教程:电路搭建及矢量控制SVPWM算法实践,自定义电机模型替换指南,Maxwell电机与Simplorer联合仿真教程:电路搭建及矢量控制SVPWM算法实

    【毕业设计】基于微信平台的电子门票系统(小程序)【源码+论文+答辩ppt+开题报告+任务书】.zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

Global site tag (gtag.js) - Google Analytics