2013-01-25 39 views
2

假設我有一個Grid有一些鏈接來編輯Entity。這是我.tml文件如何在我的Tapestry 5應用程序中創建簡單和重構的頁面鏈接?

<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; 

這是succint,我沒有寫很多的樣板代碼。這裏的陷阱是如果我重構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文件,否則掛毯會抱怨缺少@Component

所以我的問題是,如何實現一些沒有樣板的重構參數化頁面鏈接?

我使用的是Tapestry 5.3.6。

回答

1

它看起來像你正在使用作爲一個動作鏈接和它的奇怪,它的作品。

此外,這種方法的另一個問題是,你最終有一次往返服務器比你所需要的。

試試這個:

@Inject 
private PageRenderLinkSource renderLinkSource; 

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

然後:

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

順便說一句,這asumes您的網格具有「行=人」

+0

雖然我已經發現,解決方案我正在接受你的答案。 –

相關問題