gpt4 book ai didi

java - 如何在我的 Tapestry 5 应用程序中创建简单且可重构的页面链接?

转载 作者:行者123 更新时间:2023-11-30 11:36:27 25 4
gpt4 key购买 nike

假设我有一个 Grid,其中包含一些用于编辑 Entity 的链接。这是我的 .tml 文件

<table t:id="personGrid">
<!-- ... -->
<p:editCell>
<p t:id="edit">${person.lastName}</p>
</p:editCell>
<!-- ... -->
</table>

在我的 .java 文件中我有这个:

@Component(parameters = {"context=person.employeeNumber", "page=person/PersonPage"})
private PageLink edit;

这很简洁,我不需要写很多样板代码。这里的陷阱是,如果我重构 employeeNumberPersonPage。它将不再有效,最糟糕的是我不会收到错误消息。

我发现我可以像这样使用 PageRenderLinkSource:

@Inject
private PageRenderLinkSource editPersonLink;
// ...
Object onActionFromEdit(String employeeNumber)
{
return editPersonLink.createPageRenderLinkWithContext(PersonPage.class, employeeNumber);
}

这很不错。它没有更多的样板文件,但它是防重构的。

我的问题是我还是要保留

@Component(parameters = {"context=person.employeeNumber", "page=PersonPage"})
private PageLink edit;

在我的 .java 文件中,否则 Tapestry 会提示缺少 @Component

所以我的问题是,如何在没有样板的情况下实现一些可重构的参数化页面链接?

我正在使用 Tapestry 5.3.6。

最佳答案

看起来您正在将 PageLink 用作 ActionLink 并且它的工作原理有点奇怪。

此外,这种方法的另一个问题是,您最终会比所需的多往返一次服务器。

试试这个:

@Inject
private PageRenderLinkSource renderLinkSource;

public Link getEditLink() {
return renderLinkSource.createPageRenderLinkWithContext(PersonPage.class, person.getEmployeeNumber());
}

然后:

<a href="${editLink}">${person.lastName}</a>

顺便说一句,这假设您的网格中有 "row=person"

关于java - 如何在我的 Tapestry 5 应用程序中创建简单且可重构的页面链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14518620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com