当前位置: 首页 > 工具软件 > Tapestry > 使用案例 >

Tapestry学习7

濮阳鸿祯
2023-12-01

自定义组件

与页面不同的时,组件的构成是html文件,jwc文件,还有java文件。Java文件必须继承BaseComponet接口,而Jwc文件的作用类似page文件,只是声明不同:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE component-specification
PUBLIC "-//Apache Software Foundation//Tapestry Specification 3.0//EN"
"
http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<component-specification class="com.tapestry.jwc.Test" allow-body="yes" allow-informal-parameters="yes">
</component-specification>
在这里,class="com.tapestry.jwc.Test"参数指定了组件对应的java文件,allow-body="yes"参数含义是该组件是否有body,而allow-informal-parameters="yes"参数指定该组件是否能够使用HTML参数。
要使用自定义组件,可以将jwc文件与其它page文件放在一起,然后在application文件中指定HTML文件到jwc文件的映射:
<component-type type="Test" specification-path="/WEB-INF/jwc/Test.jwc"/>

也可以将自定义组件放在其它地方或者打包为jar文件
这时,需要在web-inf目录下的application文件中定义组件包的路径:
<library id="my" specification-path="/com/tapestry/jwc/my.library"/>
然后再在my.library文件中定义组件HTML到jwc文件的映射:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE library-specification
PUBLIC "-//Apache Software Foundation//Tapestry Specification 3.0//EN"
"
http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<library-specification>
<description>Project specific components</description>
<component-type type="Test" specification-path="Test.jwc"/>
</library-specification>


.html文件
<input type="text" jwcid="@Any" id="printType" name="printType" value="ognl:printType" style="display:none"/>

.jwc文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE component-specification PUBLIC
  "-//Apache Software Foundation//Tapestry Specification 3.0//EN"
  "
http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<component-specification class="com.jwc.AcctPrinter"
    allow-body="no"
    allow-informal-parameters="no">
    <parameter name="printType"
        direction="in"
        type="java.lang.String"
        required="yes"/>
</component-specification>

自定义组件是为了重用组件了,就像公共代码

 

 类似资料: