我有一个要求,每个事件都需要捕获,例如页面加载和uiclick。基本上,我必须在用户本身看不见的页面本身上的img标签中显示信息。
所以对于页面加载,我已经完成了img标签和从检票口获得的src。
但是在uiclick事件中,我必须进行异步调用。
我尝试过这样
<input type="button" onclick="makeRequest(wicket:id="clickImage",'GET', null, null,'CLICKSTREAM')" name="add" value="SIGN IN">
但我越来越例外
,索引= 39,当前= [原始标记]]
在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)
最佳答案
我不确定您要实现的目标,但是好像用Wicket <input type="button">
对Button
进行建模并附加SimpleAttributeModifier
甚至Ajax Behavior可能更适合您,特别是在异步请求的情况下您正在制作的是您自己的应用程序。
在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
是因为它可能是动态生成的,请在Component中使用setOutputMarkupId(true)
,并使用SimpleAttributeModifier对onclick
事件处理程序进行建模。您可以使用getMarkupId()
获取组件的标记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
传递给javascript函数。关于javascript - 如何将值传递给wicket中的javascript函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12305434/