如何将值传递给wicket中的javascript函数

时间:2012-09-06 17:34:25

标签: javascript wicket

我有一个要求,即需要捕获每个事件,例如页面加载和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)

1 个答案:

答案 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函数。