2013-04-08 11 views
5

मुझे एक अनुरोध के साथ एकाधिक स्ट्रेट क्रियाओं को निष्पादित करने की आवश्यकता है। लक्ष्य सर्वर के खिलाफ अनुरोध की आवश्यकता को कम करना है। तो मुझे जो चाहिए वह "मल्टीएक्शन" जैसा कुछ है जो क्रियाओं की एक सूची को उसके पैरामीटर के रूप में प्राप्त करता है जिसे इसे निष्पादित करना चाहिए और फिर इस क्रिया के "संयुक्त" परिणाम को वापस करना चाहिए।एक से अधिक क्रियाओं को निष्पादित करने के बाद

उदाहरण के लिए:

  • ग्राहक मॉड्यूल का एक बहुत
  • एक मॉड्यूल सर्वर
  • से जानकारी प्राप्त करने की जरूरत है में विभाजित है तो क्लाइंट पर एक प्रॉक्सी इस अनुरोध
  • से निपटने है
  • यह प्रॉक्सी अब जाता है और कहता है "अरे आप अन्य मॉड्यूल, मैं सर्वर पर एक rquest बनाने जा रहा हूँ, आपको कुछ चाहिए?"
  • अन्य मॉड्यूल अब वैकल्पिक प्रॉक्सी
  • तब वास्तविक "संयुक्त" अनुरोध सर्वर को निकाल दिया जाता है और परिणाम फिर से अलग हो और मॉड्यूल है कि यह

का अनुरोध करने के लिए दिया जाता है पर एक प्रार्थना कर सकते हैं तो मेरे प्रश्न हैं:

  1. क्या स्ट्रैट्स 2 में ऐसा कुछ करने का मानक तरीका है?
  2. क्या कोई अन्य मानक मैन्युअल रूप से कॉल करने और उसके परिणाम मूल्य स्टैक से प्राप्त करने का एक मानक "सार्वजनिक" तरीका है?
+0

क्या आप इसका वास्तविक दुनिया का मूल उदाहरण बना सकते हैं? –

+3

कार्रवाई श्रृंखला है, लगभग हमेशा एक बुरा विचार है। जैसा कि उल्लेख किया गया है Actonj टैग है।उस ने कहा, यह समझना मुश्किल है कि यह कहां उपयोगी होगा-ऐसा लगता है कि आपके पास गलत जगह से बहुत अधिक व्यवहार किया जा रहा है। –

उत्तर

0

अनुरोध> कार्रवाई 1> कार्रवाई 2> रिस्पांस Struts 2 में, इस श्रृंखला के परिणाम के द्वारा प्राप्त किया जा सकता है। चेन परिणाम एक परिणाम प्रकार है जो अपने स्वयं के इंटरसेप्टर स्टैक और परिणाम के साथ एक क्रिया का आह्वान करता है। यह इंटरसेप्टर स्रोत एक्शन की स्थिति का प्रचार करते समय एक कार्यवाही के लिए अनुरोध अग्रेषित करने की अनुमति देता है। नीचे इस अनुक्रम को परिभाषित करने का एक उदाहरण है।

<package name="public" extends="struts-default"> 
      <action name="createUserAccount" 
       class="net.onlineSolution.CreateAccountAction"> 
       <result name="success" type="chain">login</result> 
      </action> 
      <action name="login" 
       class="net.onlineSolution.LoginAction"> 
       <result name="success" type="chain">showDashboard</result> 
      </action> 
      <action name="showDashboard" 
       class="net.onlineSolution.DashboardAction"> 
       <result name="success">/WEB-INF/jsp/dashboard.jsp</result> 
      </action> 
    </package> 

उपर्युक्त कोड में हम तीन क्रियाएं परिभाषित करते हैं: createUserAccount, लॉगिन और शो डैशबोर्ड। ध्यान दें कि प्रत्येक क्रिया को टैग का उपयोग करके अगले व्यक्ति को कैसे जंजीर किया जाता है। इस प्रकार जब उपयोगकर्ता सिस्टम में पहली बार लॉग इन करता है, तो createAccount कार्रवाई का उपयोग किया जाएगा। खाता बनने के बाद उपयोगकर्ता को लॉगिन करने के लिए अग्रेषित किया जाता है।

0

ठीक है। एक साधारण स्ट्रेट परिणाम प्रकार का उपयोग करके यह बहुत संभव है। एक ही क्रिया में एकाधिक क्रियाओं को संसाधित करने के लिए, आप अपनी परिणाम संपत्ति में <result name="success" type="redirectAction"></result> का उपयोग कर सकते हैं। उन एकाधिक कार्रवाइयों के साथ आप <param>struts.xml की संपत्ति का उपयोग कर पैरामीटर की संख्या को भी पास कर सकते हैं। नमूना कोड के बाद अपने संदर्भ के लिए है: -

<result name="success" type="redirectAction"> 
    <param name="actionName">[.. you can write another action here ..]</param> 
    <param name="[.. parameter name ..]">${.. parameter name ..}</param> 
</result> 
2

इस परिणाम प्रकार में "redirectAction" का उपयोग करके प्राप्त किया जा सकता है। निम्नलिखित कोड एक उदाहरण है। नेस्टेड क्रियाओं का उपयोग करने की आपकी आवश्यकता के अनुसार आपको स्ट्रैट एक्सएमएल में एक्शन टैग कॉन्फ़िगर करना होगा।

 <action name="userHomeAction" class="com.etp.connect.struts.action.UserHomeAction"> 
     <result type="redirectAction" name="SUCCESS_EDIT"> 
      <param name="actionName">getUserEditData</param> 
      <param name="selectedUser">${selectedUser}</param>   
     </result> 
     <result name="error">/jsp/userMgmt/Users_Home.jsp</result> 
     <result name="login">/jsp/loginMgmt/Login.jsp</result> 
    </action> 
संबंधित मुद्दे

 संबंधित मुद्दे