首先,在
showall.tml
中,把
actionLink
组件换成
PageLink
组件,你可以把
t:id
属性去掉,因为它不再有用了。
<a href="#" t:type="PageLink" t:page="Details" t:context="celebrity.id">
${celebrity.lastName}
</a>
去掉
ShowAll.java
中的关于处理这个事件的方法
onShowDetails
,并且在
details.java
中加入
onActivate
方法:
void onActivate(long id)
{
celebrity = dataSource.getCelebrityById(id);
}
还需要提供访问数据源的权限,并且去掉
celebrity
的
@Persist
属性
@ApplicationState
private MockDataSource dataSource;
private Celebrity celebrity;
再试试,问题就这么很简单的解决了。
你可以看到,在一个典型的选择
--
详细的情况下,
pagelink
组件可以比
actionlink
做的更好。这并不是说,始终
pagelink
有优势。在一定的情况下,
actionlink
将是唯一合理的选择,例如,当一点击一个链接,想用一些复杂的逻辑来处理一些问题,而不是只传递一个参数到另一个网页。无论如何,现在你知道这两个组件的区别和优势了。
现在注册页面还是空的,我们将用大量新的
Tapestry
组件。填补这个网页的内容。