में संस्करण संख्या हटाएं विकेट 1.5 में पेश किए गए यूआरएल में संस्करण संख्या को मैं कैसे हटा या छुपा सकता हूं?यूआरएल
किसी पृष्ठ को बढ़ाना मदद नहीं करता है।
http://localhost/MyPage/SubPage?0
में संस्करण संख्या हटाएं विकेट 1.5 में पेश किए गए यूआरएल में संस्करण संख्या को मैं कैसे हटा या छुपा सकता हूं?यूआरएल
किसी पृष्ठ को बढ़ाना मदद नहीं करता है।
http://localhost/MyPage/SubPage?0
Application.init() में:
mount(new MountedMapperWithoutPageComponentInfo("/subpage", MyPage.class));
निम्नलिखित मैपर वर्ग के साथ:
public class MountedMapperWithoutPageComponentInfo extends MountedMapper {
public MountedMapperWithoutPageComponentInfo(String mountPath, Class<? extends IRequestablePage> pageClass) {
super(mountPath, pageClass, new PageParametersEncoder());
}
@Override
protected void encodePageComponentInfo(Url url, PageComponentInfo info) {
// do nothing so that component info does not get rendered in url
}
@Override
public Url mapHandler(IRequestHandler requestHandler)
{
if (requestHandler instanceof ListenerInterfaceRequestHandler ||
requestHandler instanceof BookmarkableListenerInterfaceRequestHandler) {
return null;
} else {
return super.mapHandler(requestHandler);
}
}
}
पृष्ठों माउंट करने के लिए निम्नलिखित नक्शाकार का प्रयोग करें, यह मुखपृष्ठ को छोड़कर किसी भी किताब markable पृष्ठ पर काम करना चाहिए।
यहाँ कैसे()
mount(new MountedMapperWithoutPageComponentInfo("/subpage", MyPage.class));
Application.init में नक्शाकार उपयोग करने के लिए यहाँ नक्शाकार है।
import org.apache.wicket.request.Url;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.mapper.MountedMapper;
import org.apache.wicket.request.mapper.info.PageComponentInfo;
import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
public class MountedMapperWithoutPageComponentInfo extends MountedMapper {
public MountedMapperWithoutPageComponentInfo(String mountPath, Class<? extends IRequestablePage> pageClass) {
super(mountPath, pageClass, new PageParametersEncoder());
}
@Override
protected void encodePageComponentInfo(Url url, PageComponentInfo info) {
// does nothing so that component info does not get rendered in url
}
}
मैं पहली विधि की कोशिश की, संस्करण संख्या गायब हो जाता है, लेकिन सभी लिंक कार्य करना बंद कर। दूसरी विधि संस्करण संख्याओं को हटा नहीं देती है। – rotsch
पहली विधि मेरे लिए बिना किसी समस्या के काम करती है। मेरे पृष्ठ में लिंक भी हैं, सभी ठीक काम करते हैं। क्या आपको कोई त्रुटि दिखाई देती है? दूसरे समाधान के बारे में भी आपका सही, यह काम नहीं करता है और मैंने इसे बाहर निकाला है, क्षमा करें। – Alinoor
मैं काम नहीं कर रहे लिंक की समस्या को आंशिक रूप से पुनर्निर्मित करने में कामयाब रहा, मेरे मामले में ऐसे फॉर्म थे जो काम करना बंद कर देते थे।मैंने http://stackoverflow.com/questions/2178285/stateless-apache-wicket-stateless-pages- अनुरोधों का उत्तर यह जांचने के लिए किया कि मेरे कौन से घटक राज्य भर गए हैं, उनमें से अधिकांश के लिए मुझे getStatelessHint को ओवरराइड करने की आवश्यकता है () लिंक और रूपों के लिए, सही लौटने की विधि मैंने स्टेटलेस संस्करण (स्टेटलेसलिंक, स्टेटलेसफॉर्म) का उपयोग किया। मैंने फिर उपरोक्त कोड का उपयोग करना बंद कर दिया और कंपोनेंटइन्फो को अब और प्रस्तुत नहीं किया जा रहा था और पेज मेरे द्वारा किए गए त्वरित परीक्षणों से काम कर रहे हैं। – Alinoor
यदि आप संस्करण संख्या नहीं चाहते हैं तो आपको पृष्ठ पूरी तरह से स्टेटलेस होना चाहिए, संस्करण संख्या राज्य के पृष्ठों के लिए है। उदाहरण के लिए यदि आपके पृष्ठ में एक फॉर्म शामिल है तो आपको फॉर्म घटक के स्टेटलेस संस्करण का उपयोग करना चाहिए, जो org.apache.wicket.markup.html.form.StatelessForm है। यदि आपका पृष्ठ पहले से ही पूरी तरह से स्टेटलेस है, तो आप org.apache.wicket.Page # setStatelessHint विधि का आह्वान करके विकेट को संकेत दे सकते हैं।
आप सही हैं। लेकिन मैं बिना किसी संस्करण संख्या के राज्यव्यापी पेज चाहता हूं, यह विकेट 1.4 में संभव था। – rotsch
मेरे लिए setStatelessHint
साथ समाधान काम नहीं किया।
class MyApplication extends WebApplication {
@Override protected void init() {
getRequestCycleSettings().setRenderStrategy(
IRequestCycleSettings.RenderStrategy.ONE_PASS_RENDER);
....
}
}
यह समाधान विकेट संस्करण 6.16.0 के लिए मेरे लिए काम करता है। – Yuci
समाधान एक स्वयं बनाया MountedMapperWithoutPageComponentInfo वर्ग का उपयोग कर विकेट 6.13+ के लिए काम नहीं करता है, पेज उपयोगकर्ता क्रियाओं को कालबैक का जवाब नहीं होगा: निम्नलिखित काम किया है। (। नोट इंटरनेट पर MountedMapperWithoutPageComponentInfo के कई संस्करण देखते हैं कि)
6.13+ (6,15 के साथ परीक्षण) के लिए एक समाधान पाया जा सकता है:
http://apache-wicket.1842946.n4.nabble.com/Delete-version-number-in-url-td4665752.html
// Put this code in your WebApplication subclass
import org.apache.wicket.core.request.mapper.MountedMapper;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
import org.apache.wicket.request.mapper.info.PageComponentInfo;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
private static class NoVersionMapper extends MountedMapper {
public NoVersionMapper(final Class<? extends IRequestablePage> pageClass) {
this("/", pageClass);
}
public NoVersionMapper(String mountPath, final Class<? extends IRequestablePage> pageClass) {
super(mountPath, pageClass, new PageParametersEncoder());
}
@Override
protected void encodePageComponentInfo(Url url, PageComponentInfo info) {
//Does nothing
}
@Override
public Url mapHandler(IRequestHandler requestHandler) {
if (requestHandler instanceof ListenerInterfaceRequestHandler || requestHandler instanceof BookmarkableListenerInterfaceRequestHandler) {
return null;
} else {
return super.mapHandler(requestHandler);
}
}
}
तो फिर तुम का उपयोग कर पृष्ठों माउंट कर सकते हैं:
// Put this in the init() method of your WebApplication subclass
getRootRequestMapperAsCompound().add(new NoVersionMapper("urlPatternOfAPage", YourPage.class));
यदि आप पृष्ठ को माउंट करने के लिए '@ माउंटपाथ' एनोटेशन का उपयोग करते हैं तो समाधान क्या है? – Jon
अब तक सुझाए गए कामकाज विशिष्ट रिलीज के साथ काम कर सकते हैं और साइड इफेक्ट्स हो सकते हैं। उन्हें हैक माना जाना चाहिए। मैंने इन हैक्स का उपयोग किया है और वे नई रिलीज से टूट गए थे। इसलिए मैंने यहां जेनेरिक फ्रेमवर्क समर्थन के लिए एक अनुरोध बनाया है (कृपया टिप्पणी/वोट): setVersioned(false) should force single Page Version।
एक पक्ष प्रभाव का एक और उदाहरण: Page Reload on Submit of non-versioned Page
याद रखें कि मैंने 3 साल पहले उत्तर पोस्ट किया था। इन वर्षों में विकेट में कई चीजें बदल गई हैं :) – Apostolos
यह काम किया! आपका बहुत बहुत धन्यवाद। मैं पूरे समाधान का प्रतिनिधित्व करने के लिए अपनी पोस्ट संपादित करता हूं। – rotsch
वास्तव में काम करता है। यदि आप अपने मुखपृष्ठ के लिए यह व्यवहार चाहते हैं तो इसके बजाय HomePageMapper का विस्तार करें। –
सिर्फ स्पष्टता के लिए, यह आपके पृष्ठों को स्टेटलेस बनाता है इसलिए यदि आप राज्य के पृष्ठ चाहते हैं तो इसका उपयोग न करें। –