2013-06-01 32 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按预期可能无法正常工作。

相关问题