2013-06-01 33 views
0

div標籤內部的html內容在我的HTML文件,我有這樣一個div標籤,我如何獲得使用Apache Wicket的

<div wicket:id="editorArea">Type Here</div> 

我使用的是JavaScript庫叫bootstrap-wysiwyg,使這個div標籤文本是我們可以輸入富文本的文本。當人物鍵入文字時,div標籤的html內容會更新以表示html中的文字內容。我想將它檢索到wicket中的html文件的Java代碼。我試圖通過創建參考變量來創建div標籤,如下所示:

WebMarkupContainer editorArea=new WebMarkupContainer("editorArea"); 
String text=editorArea.getMarkup().toString(true) 

但是,這不會給我更新的HTML內容。我只給出最初的html內容。這裏有什麼問題?

+1

看看wicket-extensions的AjaxEditableLabel是如何工作的。也許這會有所幫助。 – Nicktar

+0

我試過這樣使用它,\t \t AjaxEditableMultiLineLabel ajaxEditableMultiLineLabel = new AjaxEditableMultiLineLabel(「editorArea」); \t \t ajaxEditableMultiLineLabel.setOutputMarkupId(true); \t \t ajaxEditableMultiLineLabel.setMarkupId(「editorArea」); \t \t form.add(ajaxEditableMultiLineLabel);但是它給出了下面的異常java.lang.IllegalStateException:沒有找到該組件的模型,要麼顯式地傳遞一個模型,要麼確保一個可繼承的模型可用。 at org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel.getParentModel(AjaxEditableLabel.java:577) – andunslg

+0

您需要提供一個Model(對構造函數或對其父樹的CompoundModel)。這就是Wicket放入HTML內容的地方。 – Nicktar

回答

0

你可能需要editorArea添加到HTML代碼首先

WebMarkupContainer editorArea=new WebMarkupContainer("editorArea"); 
add(editorArea); 
String text=editorArea.getMarkup().toString(true) 
+1

這需要工作。方法editorArea.getMarkup()。toString(true)只返回初始標記。動態(JS)更新標記是不是來了 – andunslg

1

採取從檢票口的擴展看看AjaxEditableLabel。

標籤將更新它的模式與類型化的內容

有一個例子在Wicket Library,顯示它如何被使用。本示例使用CompoundPropertyModel,但也可以輕鬆地與其他類型的模型配合使用。

+0

我通過另一種方法糾正了我的問題,但你的回答幫了我很多,非常感謝。 – andunslg

0

如果我閱讀javadoc的權限,getMarkup()只會爲您提供組件的標記文件。嘗試要麼

editorArea.getModelObject() 

editorArea.getValue() 

第一個是首選,但由於editorArea是WebMarkupContainer按預期可能無法正常工作。

相關問題