तोड़ने के कारण होता है हम कुछ समय के लिए स्ट्रैट्स 2.1.8 पर चल रहे हैं और सभी स्ट्रूट क्रियाएं अपेक्षित रूप से काम कर रही हैं, यानी स्ट्रेट्स कार्यों के लिए href को क्रिया नाम के साथ प्रस्तुत किया जाता है बिना विस्तार के। (Struts2। प्रतिक्रिया विस्तार सीएसएस, जावास्क्रिप्ट और स्ट्रेट्स डोजो को
<ul id="top_menu">
<li id="itemHome" class="active"><s:a action="viewHome">Home</s:a></li>
<li><s:a action="viewSearch">Search</s:a></li>
<li><s:a action="viewBookMarks">My Bookmarks</s:a></li>
<li><s:a action="viewSupport">Support</s:a></li>
</ul>
लिंक http://localhost/viewHome
को सही ढंग से गाया, http://localhost/viewSearch
, आदि 2.1.8
के तहत हम सिर्फ 2.2.1 Struts करने के लिए उन्नत:
यहाँ JSP कोड है कि के लिंक की स्थापना की है किसी ने इस संस्करण से v2.3.4.1 तक जांच की है) और अब स्ट्रिंग्स एक्शन लिंक http://localhost/viewHome.action
, http://localhost/viewSearch.action
इत्यादि के रूप में प्रस्तुत कर रहे हैं,
मेरे शोध से पता चला है कि सामान्य सुझाव डी समाधान
<constant name="struts.action.extension" value=""/>
स्ट्रिप्स.एक्सएमएल में .action प्रत्यय को हटाने के लिए उपयोग करना है। हालांकि यह यूआरएल सही तरीके से प्रस्तुत करता है, यह एक अप्रत्याशित दुष्प्रभाव पैदा कर रहा है। स्ट्रूट्स अब सोचता है कि प्रत्येक यूआरएल एक कार्रवाई है जिसमें .css, .png, आदि के लिए अनुरोध शामिल हैं।
web.xml में मेरा फ़िल्टर-मैपिंग नहीं बदला है। और हालांकि भेजता/* Struts के लिए हम 2.1.8
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
के तहत इस व्यवहार नहीं देखा था इस मैं कार्रवाई के रूप में इन अनुरोधों को इलाज करने की कोशिश Struts को रोकने के लिए excludePattern उपयोग करने के लिए मिला है प्रतिक्रिया करने के लिए।
<constant name="struts.action.excludePattern" value="/index.html,/images/.*,/js/.*,/css/.*"/>
जबकि इस काम करता है, पिछले बाधा है कि मेरे लॉग Struts टैग अनुरोध से त्रुटियों कि Struts कार्रवाई के रूप में संभाला जा रहा है से भरे हुए हैं है। जब मैं इन यूआरआई को पैटर्न को बाहर करने के लिए जोड़ता हूं तो स्ट्रैट्स डोजो टैग कुछ पृष्ठों में काम नहीं कर रहे हैं।
struts.xml के कुछ हिस्सों को प्रभावित कर रहे हैं:
<constant name="struts.devMode" value="true" />
<!-- Set URL's to have no .action extension -->
<constant name="struts.action.extension" value=""/>
<constant name="struts.action.excludePattern" value="/index.html,/images/.*,/js/.*,/css/.*"/>
और लॉग में Struts त्रुटियों का एक उदाहरण है:
2012-09-26 17:12:57,984 [http-bio-8080-exec-9] ERROR org.apache.struts2.dispatcher.Dispatcher- Could not find action or result
/struts/dojo/struts_dojo.js
There is no Action mapped for namespace [/] and action name [struts_dojo.js] associated with context path []. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:501)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
मुझे यकीन है कि अगर struts डोजो अनुरोध कर रहे हैं नहीं कर रहा हूँ वास्तविक यूआरआई या आभासी या कुछ और।
यह इस बिंदु पर महसूस करता है कि मैंने निश्चित रूप से कुछ हुप्स के माध्यम से कूद दिया है ताकि यह सुनिश्चित किया जा सके कि 2.1.8 पर वापस जाने के लिए अनिवार्य रूप से एक स्पष्ट समस्या क्या है जो JAR पर वापस जा रहा है लेकिन मैं ' यदि संभव हो तो आगे बढ़ने का तरीका निर्धारित किया गया है।
किसी भी मदद की बहुत सराहना की जाती है।
Humm, ऐसा लगता है कि एक पेज lib struts_dojo.js अनुरोध कर रहा है । क्या आप स्ट्रूट्स के लिए डोजो प्लगइन का उपयोग कर रहे हैं? यह बहिष्कृत है। यदि नहीं, तो क्या आप उस पुस्तकालय का अनुरोध कर रहे कोड को प्रदान कर सकते हैं? –