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;
これは簡潔であり、多くのボイラープレート コードを記述する必要はありません。ここでの落とし穴は、 または のいずれかをリファクタリングするemployeeNumber
場合PersonPage
です。それはもはや機能しません。最悪の部分は、エラー メッセージが表示されないことです。
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 を使用しています。