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

how to pass the value to the javascript function in wicket

本文关键字:wicket 中的 javascript 函数 值传      更新时间:2023-09-26

我有一个要求,每个事件都需要被捕获,比如页面加载和uiclick。基本上,我必须在页面本身的img标记中显示用户看不到的信息。因此,对于页面加载,我已经完成了img标记和从wicket获取的src。但是在uiclick事件中,我必须执行异步调用。

我试过像这个

<input type="button" onclick="makeRequest(wicket:id="clickImage",'GET', null, null,'CLICKSTREAM')" name="add"  value="SIGN IN">

但我得到了例外

,index=39,current=[原始标记]]网址:org.apache.wicket.markup.AbstractMarkupParser.parseMarkup(AbstractMarkupPather.java:299)网址:org.apache.wicket.markup.AbstractMarkupParser.parse(AbstractMarkupPather.java:181)网址:org.apache.wicket.markup.loarder.SimpleMarkupLoader.loadMarkup(SimpleMarkupLoader.java:50)网址:org.apache.wicket.markup.loarder.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 Button建模<input type="button">并在其上附加SimpleAttributeModifier甚至Ajax Behavior更适合您,特别是如果您正在向自己的应用程序发出异步请求的话。

在JS函数的参数中使用wicket:id是没有意义的。您在HTML中使用wicket:id将Wicket组件附加到标记。如果clickImage只是一个普通的HTML id属性,只需将其键入为字符串即可。

例如:

<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,因为它可能是按常规生成的,请在组件中使用setOutputMarkupId(true),并使用SimpleAttributeModifier为onclick事件处理程序建模。您可以使用getMarkupId()获取组件的标记id。

例如:

HTML:

<input type="text" wicket:id="textComponent">
<input type="button" wicket:id="buttonComponent">

Java

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