我如何控制 URL <t:pagelink> 渲染?

How can I control which URL <t:pagelink> renders?

背景

Tapestry 的页面link 组件将页面的逻辑名称缩短为方便易用的 URL。

例如(在Tapestry Documentation中找到),如果页面class是org.example.pages.address.CreateAddress,页面link渲染的URL渲染一个link 到 https://<host>/address/create。即去掉多余的“Address”作为后缀。

问题

我很喜欢这个功能,但是当页面 class 名称包含子包的名称时它会导致问题。

例如,org.example.pages.member.MembershipProfile 结果为 https://<host>/member/shipprofile。 link 有效,但 URL 看起来很粗糙,没有经过精心设计。

有没有办法配置这种行为,比如以某种方式定义异常,使 URL 成为 https://<host>/member/membershipprofile

解决方法

作为一种解决方法,可以像这样 <a href="https://<host>/member/membershipprofile">...</a> 编写简单的代码 HTML。这可行,但不太方便,尤其是在包含上下文时。

提前感谢您的任何建议。

我认为您不能在不重写核心服务的情况下更改此行为。

您还可以将 MembershipProfile 重命名为 Profile,或者如果无法重命名,则使用 http://www.tynamo.org/tapestry-routing+guide/ 提供自定义 URL 映射。