पैरामीटर केवल यूआरएल में दिखाई देते हैं यदि पेज बुकमार्क करने योग्य है, या विशिष्ट लिंक बुकमार्क करने योग्य है।
आप एक Link
कि setResponsePage(Page)
का उपयोग कर पृष्ठ पर जाने (एक पृष्ठ उदाहरण गुजर) setResponsePage(Class<Page>, PageParameters)
के बजाय, लिंक बनाया पेज के बुकमार्क योग्य संस्करण को इंगित नहीं करेगा (एक पृष्ठ वर्ग गुजर), लेकिन स्टेटफुल को बनाते हैं उदाहरण।
इस काम को करने के लिए, आपको super(PageParameters)
कन्स्ट्रक्टर को कॉल नहीं करना चाहिए (ताकि पृष्ठ में स्टेटलेस यूआरएल बनाने के लिए पर्याप्त जानकारी न हो)।
इस उदाहरण में, आप SecretPage
पर दो अलग-अलग लिंक, एक स्टेटलेस, बुकमार्क करने योग्य और अन्य राज्य के माध्यम से नेविगेट कर सकते हैं।
SecretPage
में दो रचनाकार भी हैं। एक को PageParameters
प्राप्त होता है और super
इसे पास करता है। दूसरे को सीधे कॉन्स्ट्रूसर पैरामीटर के माध्यम से मान प्राप्त होता है, और इसे super
तक पास नहीं करता है (यदि इसे super(new PageParameters().add("message",message)
कहा जाता है, जैसा कि टिप्पणी की गई पंक्ति में है, तो यह स्वचालित रूप से एक बुकमार्क करने योग्य यूआरएल पर रीडायरेक्ट हो जाएगा)।
HomePage.java:
public class HomePage extends WebPage {
public HomePage(final PageParameters parameters) {
add(new BookmarkablePageLink<Void>("bookmarkable", SecretPage.class,
new PageParameters().add("message", "This message will appear in the URL")));
add(new Link<Void>("instance") {
@Override
public void onClick() {
setResponsePage(new SecretPage("This message will NOT appear in the URL"));
}
});
}
}
HomePage.html:
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" >
<body>
<p><a wicket:id="bookmarkable">Bookmarkable link (stateless)</a></p>
<p><a wicket:id="instance">Hidden parameters link (stateful)</a></p>
</body>
</html>
SecretPage.java
public class SecretPage extends WebPage {
public SecretPage(PageParameters parameters) {
super(parameters);
init(parameters.get("message").toString("No message!"));
}
public SecretPage(String message) {
// super(new PageParameters().add("message", message)); // COMMENTED!
init(message);
}
private void init(String message) {
info(message);
add(new FeedbackPanel("feedback"));
add(new BookmarkablePageLink<Void>("back", getApplication().getHomePage()));
}
}
SecretPage.html
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" >
<body>
<p wicket:id="feedback"></p>
<p><a wicket:id="back">BACK</a></p>
</body>
</html>
और, http://host/app/secret
जैसे एक साधारण यूआरएल के लिए, आपको इसे माउंट करना होगा। आप इसे अपने WebApplication
कक्षा में कर सकते हैं।
विकेट आवेदन।जावा
public class WicketApplication extends WebApplication {
@Override
protected void init() {
super.init();
mountPage("home", getHomePage());
mountPage("secret", SecretPage.class);
}
public Class<HomePage> getHomePage() {
return HomePage.class;
}
}
यह उदाहरण विकेट 1.5 (अभी भी RC4.2) का उपयोग करता है, और (कुछ तरीकों और वर्गों का नाम दिया गया, या विभिन्न संकुल में ले जाया गया) 1.4.x के साथ काम करने कुछ संशोधनों की जरूरत है, लेकिन यह विचार है वही।
"बुकमार्क करने योग्य" बिट को छोड़ दें, एक सरल 'पेजलिंक' का उपयोग करें। अगर मुझे सही याद है, तो इसे काम करना चाहिए। – biziclop
@ बिज़िकलोप: मैं 'लिंक' का एक उप-वर्ग 'वास्तव में' मानक 'लिंक' का उपयोग करने की कोशिश कर रहा हूं, क्योंकि 'लिंक' सार है - लेकिन इसमें कई अन्य संशोधन शामिल हैं। 'पेजलिंक' को बहिष्कृत किया गया है, जावाडोक इसके बजाय 'बुकमार्क करने योग्य पेज लिंक्स' या 'लिंक' का उपयोग करने की सिफारिश करता है। – Pops
@ लॉर्ड टोरगामस वेल, फिर 'लिंक' का उपयोग करें। :) या आप इसके साथ बहिष्कृत हो सकते हैं और 'पेजलिंक' का उपयोग कर सकते हैं। हालांकि मुझे नहीं लगता कि 'लिंक' का उपयोग करना कितना जटिल हो सकता है। क्या आप इसके बारे में कुछ और जानकारी जोड़ सकते हैं? हो सकता है कि हम 'लिंक की – biziclop