0

我有一个要求,即需要捕获每个事件,例如页面加载和 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 = [Raw markup]] at org.apache.wicket.markup.AbstractMarkupParser.parseMarkup(AbstractMarkupParser.java:299) at 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) at org.apache.wicket.markup.MarkupFactory.loadMarkup(MarkupFactory.java:430) at org.apache.wicket.markup.MarkupCache.loadMarkup(MarkupCache.java:442 )

4

1 回答 1

2

我不确定您要实现什么,但似乎<input type="button">使用 Wicket对其进行建模Button并将其附加SimpleAttributeModifier甚至 Ajax 行为可能更适合您,特别是如果您发出的异步请求是针对您自己的应用程序的.

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

例如:

<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)请在组件中使用,并onclick使用 SimpleAttributeModifier 对该事件处理程序进行建模。您可以使用getMarkupId().

例如:

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

于 2012-09-06T19:20:35.120 回答