Was mir eigentlich nur durch Zufall auffiel, ist die Tatsache, dass man in Wicket einen Link auch an andere Tags als “a”,”area”, etc binden kann. Netterweise macht Wicket dann daraus einen Javascript-Aufruf. Das geht mit einem Link und (wesentlich interessanter) auch mit einem AjaxFallbackLink.
Michael Mosmann
Praxisbuch Wicket
Professionelle Web-2.0-Anwendungen entwickeln
(bei Amazon)
Leseproben: Inhaltsverzeichnis,Vorwort,
Leseprobe aus Kapitel 3 und 4 (Leseprobe1)
Beispielcode zum Download
Praxisbuch Wicket
Professionelle Web-2.0-Anwendungen entwickeln
(bei Amazon)
Leseproben: Inhaltsverzeichnis,Vorwort,
Leseprobe aus Kapitel 3 und 4 (Leseprobe1)Beispielcode zum Download

New blog post: onclick statt Link http://tinyurl.com/ddmrld
Hallo Michael,
wie läßt sich ein externer Link in einer ListView ohne Javascript darstellen? Was auch immer ich versuche, ich bekomme nur Ajax links.
Viele Grüße
Kann ich mal den Code sehen? Die ExternalLink-Klasse sollte es richten, oder verstehe ich das Problem gerade nicht?
Hier ist der Code. Frei nach dem ListViewPage – Beispiel aus dem Buch.
Ganz unten steht der generierte HTML-Code.
Was ich gerne hätte wären ganz normale externe links, ohne JavaScript. Wie geht das?
package de.wicketpraxis.findfiles.pages;
import java.util.Arrays;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
public class ListViewPage extends WebPage {
public ListViewPage() {
add(new ListView("list", Arrays.asList(new ExternalLink(
"part1", "http://www.google.de", "http://www.google.de"), new ExternalLink("part1", "http://www.findfiles.net",
"http://www.findfiles.net"))) {
@Override
protected void populateItem(ListItem item) {
ExternalLink text = item.getModelObject();
item.add(text);
}
});
}
}
Start
http://www.google.de
http://www.findfiles.net
Hier ist der Code. Frei nach dem ListViewPage – Beispiel aus dem Buch.
Ganz unten steht der generierte HTML-Code.
Was ich gerne hätte wären ganz normale externe links, ohne JavaScript. Wie geht das?
package de.wicketpraxis.findfiles.pages;
import java.util.Arrays;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
public class ListViewPage extends WebPage {
public ListViewPage() {
add(new ListView(“list”, Arrays.asList(new ExternalLink(
“part1″, “http://www.google.de”, “http://www.google.de”), new ExternalLink(“part1″, “http://www.findfiles.net”,
“http://www.findfiles.net”))) {
@Override
protected void populateItem(ListItem item) {
ExternalLink text = item.getModelObject();
item.add(text);
}
});
}
}
Wie sieht denn das Html der Ergebnisseite aus? Sollte man nicht eher die Liste der Links (also der url) übergeben und dann
String url=item.getModelObject();
item.add(new ExternalLink("link",url,url);
schreiben?
hier nochmal der von Dir vorgeschlagene Code:
add(new ListView(“list”,Arrays.asList(“http://www.google.de/”, “http://www.findfiles.net/”)) {
@Override
protected void populateItem(ListItem item) {
String url=item.getModelObject();
item.add(new ExternalLink(“link”,url,url));
}
});
Hier die Html Datei. Habe die eckigen Klammern mit Geschweiften ersetzt. Es wird Javascript ausgegeben. Ich hätte gerne {a href=http….} linktext {/a} . Wie kann ich das mit Wicket machen?
{html}
{head}
{title}Start{/title}
{/head}
{body}
{table}
{tr}
{td}{strong}{span onclick=”window.location.href=’http://www.google.de/’;return false;”}http://www.google.de/{/span}{/strong}{/td}
{/tr}{tr}
{td}{strong}{span onclick=”window.location.href=’http://www.findfiles.net/’;return false;”}http://www.findfiles.net/{/span}{/strong}{/td}
{/tr}
{/table}
{/body}
{/html}
Eine Idee, wie man externe Links ohne Javascript im Html-Code bekommt?
Ich glaube, die Lösung ist extrem einfach. Mann muss nur statt {span wicket:id=”link”}{/span} {a wicket:id=”link” }{/a} schreiben. Das Mitdenken von Wicket ist hier zum Verhängnis geworden. Wenn Wicket statt eines Links etwas anderes bekommt, dann versucht er das über javascript zu lösen.
Ich verstehe den Satz nicht: “Mann muss nur statt -> schreiben.”
Habe den Kommentar berichtigt.. hoffentlich ist es jetzt klarer.
Super! Danke, Michael. Hat geklappt.
Übrigens, tolles Buch. Lerne viel damit.
Gern geschehen..
Wenn Du mir Feedback zu den Stellen im Buch geben möchtest, die in deinen Augen nicht so gut geschrieben waren oder sonstige Kritik, dann gern per E-Mail. Oder auch als Kommentar..