0

ページの読み込みや uiclick など、すべてのイベントをキャプチャする必要があるという要件があります。基本的には、ユーザーが見ることができないページ自体に img タグの情報を表示する必要があります。そのため、ページの読み込みについては、img タグと src を wicket から取得しました。しかし、uiclick イベントでは非同期呼び出しを行う必要があります。

私はこのようにしてみました

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

しかし、私は例外を取得しています

、インデックス = 39、現在 = [生のマークアップ]] 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) )

4

1 に答える 1

2

何を達成しようとしているのかわかりませんが<input type="button">、Wicketを使用してモデル化し、それにAjaxビヘイビアーButtonをアタッチするとSimpleAttributeModifier、特に非同期リクエストが独自のアプリケーションに対するものである場合に適しているようです。 。

JS関数のパラメーターで使用wicket:idすることは意味がありません。wicket:idHTMLで使用して、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使用し、そのイベントハンドラーをSimpleAttributeModifierでモデル化します。コンポーネントのマークアップIDは。で取得できます。setOutputMarkupId(true)onclickgetMarkupId()

例えば:

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'">

AttributeModifiers2番目のアプローチは、たとえば、リピーター内の要素に追加して、実行時に既知の生成されidたsのみをjavascript関数に渡すことができることを考えると、はるかに強力です。

于 2012-09-06T19:20:35.120 に答える