【发布时间】:2013-07-24 20:37:56
【问题描述】:
我正在使用 Apache Tapestry5 开始冒险。我正在尝试制作由一对文本字段组成的简单组件(用于测试)。组件名为“TestComp”。我有以下元素:
testComp.tml
<t:container
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<p>
<input t:type="TextField" t:id="testOne" t:value="testOne.input"/><br/>
<input t:type="TextField" t:id="testTwo" t:value="testTwo.input"/><br/>
</p>
</t:container>
TestComp.java
public class TestComp {
private DataContainer testOne;
private DataContainer testTwo;
@SetupRender
public void setup(){
testOne = new DataContainer();
testTwo = new DataContainer();
}
public String getContentOfTestOne() {
return testOne.getInput();
}
public String getContentOfTestTwo() {
return testTwo.getInput();
}
public DataContainer getTestOne() {
return testOne;
}
public void setTestOne(DataContainer testOne) {
this.testOne = testOne;
}
public DataContainer getTestTwo() {
return testTwo;
}
public void setTestTwo(DataContainer testTwo) {
this.testTwo = testTwo;
}
}
然后我尝试在其他地方使用它,例如在 index.tml:
<form t:type="form" t:id="out">
<t:testComp />
<br/><input type="submit" value="Component"/>
</form>
根据我发现的几十个材料和示例(老实说,没有一个与我的案例类似)这样的实现应该在表单中显示 testComp 元素,但不幸的是,按钮上方没有呈现任何内容(虽然挂毯没有崩溃)。我错过了什么?我是否能够放入 TestComp 类型的 Index.java 属性并将其与我的
绑定<t:testComp />
在 Index.tml 中按 id (或者它需要在我的自定义组件中实现更多的东西?)
【问题讨论】:
-
你的模板文件是以大写字母开头的(
TestComp.tml)还是不是(testComp.tml)? -
确实,我会尽快检查是否有问题。
-
好的,你是对的,sody,改变 testComp 文件名的大小写是关键。感谢您指出。
-
你应该标记答案;是的,Tapestry 在这一领域是区分大小写的:处理文件系统。
-
需要明确的是,模板文件的名称必须与 Java 类的名称完全匹配(但具有
.tml扩展名)。
标签: components custom-component tapestry