2011-12-30 65 views
4

在我的Wicket應用程序的頁面的基本模板,有一個形式,我不想檢票處理,像這樣:爲什麼Wicket會更改非Wicket表單標籤的動作屬性?

<form id="myForm" action=""> 
    <!-- input fields and submit button --> 
</form> 

我離開action屬性空總是發送到當前頁面。在應用程序的主頁上,它可以工作,但在其他頁面上,Wicket在action屬性中添加了「../」,這似乎意味着很好,但不是我想要的。

我正在使用Wicket 1.4.17。我怎樣才能停止或改變這種行爲?

該表單旨在使用戶能夠向站點管理員提交短消息作爲反饋。它出現在每個頁面上,輸入從PageParameters收集到我頁面基類的構造函數中。如果有更多Wicket的方式來做到這一點,我會欣賞提示,但這應該是a)無狀態和b)非常簡單。

+0

聽起來像是Wicket自動插入上下文路徑。您是否嘗試添加AttributeModifier而不是設置HTML標記的action屬性? – weltraumpirat 2011-12-31 02:12:18

回答

1

我會採用Wicket的方式,爲您的反饋表單編寫一個組件,然後插入到每個頁面中。由於您擁有所有頁面的(抽象)基類,因此您可以簡單地將其添加到每個頁面上。

在您的反饋表單組件中,只需覆蓋onSubmit()方法並將消息發送到站點管理員。

+0

這是無狀態的,並且總是重定向到始發頁面嗎?我不希望表單組件導致我的所有頁面序列化到會話中。 – 2012-01-10 14:43:55

+0

@HannoFietz AFAIK完全爲此目的而存在[StatelessForm](http://wicket.apache.org/apidocs/1.5/org/apache/wicket/markup/html/form/StatelessForm.html)。在'onSubmit()'方法中,你可以調用'setResponsePage(getPage()。getClass())'來實現重定向。如果您還必須尊重頁面參數,則必須將它們傳遞給組件。如果你想有更多的證據,你也可以使用'wicket-devutils'庫,特別是'StatelessComponent'和相關的'StatelessChecker'。 – r3nj1 2012-01-10 15:08:25