我有一个要求,即需要捕获每个事件,例如页面加载和uiclick。基本上我必须在用户看不到的页面本身上显示img标签中的信息。 所以对于页面加载我已经完成了img标签和src从wicket。 但是在uiclick事件中我必须做异步调用。
我试过这个
<input type="button" onclick="makeRequest(wicket:id="clickImage",'GET', null, null,'CLICKSTREAM')" name="add" value="SIGN IN">
但我得到例外
,index = 39,current = [Raw markup]] 在org.apache.wicket.markup.AbstractMarkupParser.parseMarkup(AbstractMarkupParser.java:299) 在org.apache.wicket.markup.AbstractMarkupParser.parse(AbstractMarkupParser.java:181) 在org.apache.wicket.markup.loader.SimpleMarkupLoader.loadMarkup(SimpleMarkupLoader.java:50) 在org.apache.wicket.markup.loader.InheritedMarkupMarkupLoader.loadMarkup(InheritedMarkupMarkupLoader.java:55) 在org.apache.wicket.markup.loader.DefaultMarkupLoader.loadMarkup(DefaultMarkupLoader.java:51) 在org.apache.wicket.markup.MarkupFactory.loadMarkup(MarkupFactory.java:430) 在org.apache.wicket.markup.MarkupCache.loadMarkup(MarkupCache.java:442)
答案 0 :(得分:2)
我不确定您要实现的目标,但似乎使用Wicket <input type="button">
对Button
进行建模并附加SimpleAttributeModifier
或甚至对它的Ajax行为都可以更好地适合你,特别是如果你正在做的异步请求是你自己的应用程序。
在JS函数中的参数中使用wicket:id
是没有意义的。您可以在HTML中使用wicket:id
将Wicket组件附加到标记。如果clickImage
只是一个简单的HTML id
属性,只需将其键入为String即可。
例如:
<input type="text" id="someId"> <!-- Notice this is not a Wicket component -->
<input type="button" wicket:id="buttonComponent" onclick="makeRequest('someId','GET', null, null,'CLICKSTREAM'">
如果您事先不知道id
,因为它可能是dinamically生成的,请在Component中使用setOutputMarkupId(true)
,并使用SimpleAttributeModifier为onclick
事件处理程序建模。您可以使用getMarkupId()
获取Component的标记ID。
例如:
HTML:
<input type="text" wicket:id="textComponent">
<input type="button" wicket:id="buttonComponent">
爪哇
TextField txt = new TextField("textComponent");
txt.setOutputMarkupId(true);
txt.setMarkupId("someId"); // Make sure it is unique in the page
Button b = new Button("buttonComponent");
b.add(new SimpleAttributeModifier("onclick", "makeRequest('" + txt.getMarkupId() + "','GET', null, null,'CLICKSTREAM'"));
add(txt);
add(b);
呈现HTML:
<input type="text" id="someId">
<input type="button" onclick="makeRequest('someId','GET', null, null,'CLICKSTREAM'">
第二种方法功能强大得多,例如,您可以将AttributeModifiers
添加到转发器中的元素,这样您就可以只在运行时通知,生成id
s到javascript函数。