2012-09-05 24 views
1

我試圖在Apache Wicket中更改DatePicker的HTML標記。 我有什麼現在:如何更改Wicket DatePicker標記?

public CustomDateTextField(final String id, IModel<T> model, Class<T> type, String modelPath) { 
     super(id, model, type, modelPath); 
     addDatePicker(); 

} 

而這其中使用默認的標記。例如,要初始化這個我用這個Java代碼:

CustomDateTextField<?> textField = new CustomDateTextField(field, model.bind(field), pathPrefix + "." + field); 

而這個HTML標記:

<input wicket:id="date" name="date" type="text" size="10" maxlength="10" /> 

但對於自動化測試我想對UI可用的唯一ID。我的意思是,如果我會檢查我的日期選擇在UI現在,我將有:

<img style="cursor: pointer; border: none;" id="date53Icon" src="resources/org.apache.wicket.extensions.yui.calendar.DatePicker/icon1.gif" alt="" title=""> 

但我需要這個特定的日期選擇器是唯一的。例如,我可以添加到html name =「apocalypseDate」,但要做到這一點,我需要以某種方式提取標記。現在我很困惑如何做到這一點。

在此先感謝!

+0

嗨, 我不明白你的意思正好與「使這個特定的日期選擇器獨特的」。你需要爲img標籤分配一個唯一的ID嗎? –

+0

我的意思是我想在頁面上有少量的日期選擇符,但使用不同的ID或名稱。所以我希望能夠在我檢查元素時看到。例如,我想要2個日期選擇器:1. name =「startDate」; 2. name =「endDate」。 我現在擁有的 - 生成的id,它隨頁面刷新而改變。我想讓它保持不變。 – psisoyev

+0

好的,謝謝你的澄清。在這種情況下,我還建議使用setMarkupId來設置id,或者可以使用屬性修飾符(請參閱下面的答案) –

回答

0

該ID始終是組件的組件ID和圖標(這就是爲什麼您會得到date53Icon),在DatePicker#getIconId中定義。不幸的是,這個方法是最終的,所以你不能覆蓋它。但是你可以設置文本字段的id:

textField.setMarkupId("textField"); 
textField.setOutputMarkupId(true); 

圖像的ID後會有textFieldIcon

+0

謝謝!真的行! – psisoyev

0

或者,你可以設置name屬性是這樣的:

textField.add(AttributeModifier.replace("name", "fixedValue")); 
+0

在這種情況下不起作用。他希望設置由'DatePicker'生成的圖像的id,而不是'TextField'的id /名稱。 –