खोज…


परिचय

इस मैनुअल में विभिन्न तरीके हैं जिनमें पोर्टलेट एक दूसरे के बीच समन्वय या संचार कर सकते हैं और उन विभिन्न परिदृश्यों के लिए जिनमें किसी विशेष दृष्टिकोण का उपयोग किया जाता है।

टिप्पणियों

संदर्भ:

  1. पब्लिक ने परम को रेंडर किया
  2. JSR 286 चश्मा
  3. पोर्टलेट सत्र

सार्वजनिक रेंडर पैरामीटर का उपयोग करना

यह दृष्टिकोण JSR 286 में पेश किया गया था।

JSR 168 में, एक portlet की processAction में सेट मापदंडों प्रस्तुत करना ही में कि portlet.With लोक पैरामीटर सुविधा प्रदान, प्रस्तुत करना मापदंडों एक portlet की processAction में सेट कॉन्फ़िगर करने के क्रम also.In अन्य portlets की प्रस्तुत करना में उपलब्ध हो जाएगा उपलब्ध थे इसका समर्थन करने वाले सभी पोर्टल्स के लिए:

portlet.xml में portlet.xml टैग समाप्त होने से ठीक पहले <supported-public-render-parameter> टैग portlet.xml

<security-role-ref>
    <role-name>user</role-name>
</security-role-ref>
<supported-public-render-parameter>{param-name}</supported-public-render-parameter>
</portlet>

<portlet-app> टैग समाप्त होने से ठीक पहले <public-render-parameter> टैग जोड़ें

  <public-render-parameter>
    <identifier>{param-name}</identifier>
    <qname xmlns:x="localhost">x:{param-name}</qname>
  </public-render-parameter>
</portlet-app>

processAction विधि में, परम मान को प्रतिक्रिया में सेट करने की आवश्यकता होती है

res.setRenderParameter({param-name},{param-value});

पोस्ट हम सभी आवश्यक पोर्टलेट के लिए इसे कॉन्फ़िगर करने के साथ करते हैं, संबंधित पोर्टलेट के एक्शन चरण को निष्पादित करने के बाद, पृष्ठ पर सभी सहायक पोर्टल्स के लिए रेंडर चरण में उपलब्ध होना चाहिए, चाहे वह समान या अलग-अलग एप्लिकेशन का हिस्सा हो (युद्ध )।

पोर्टलेट सत्र का उपयोग करना

यह एक दृष्टिकोण है जो जेएसआर 168 के बाद से है। यह हमें पोर्ट्रेट सत्र का उपयोग करके विशेषताओं को साझा करने की अनुमति देता है। पोर्टलेट सत्र में विभिन्न प्रकार के स्कोप हो सकते हैं:

  1. पोर्टेट स्कोप (केवल पोर्टलेट के भीतर उपलब्ध विशेषताएँ)
  2. एप्लिकेशन स्कोप (संपूर्ण एप्लिकेशन [युद्ध] के भीतर उपलब्ध विशेषताएँ)

इस दृष्टिकोण का उपयोग करने के लिए, हमें पोर्टलेट कॉन्फ़िगरेशन में कोई प्रविष्टि करने की आवश्यकता नहीं है, क्योंकि पोर्टलेट सत्र पोर्टलेट में आसानी से उपलब्ध है:

PortletSession session = renderRequest.getPortletSession();
session.setAttribute("attribute-name","attribute-value", PortletSession.APPLICATION_SCOPE);

या

PortletSession session = renderRequest.getPortletSession();
session.setAttribute("attribute-name","attribute-value", PortletSession.PORTLET_SCOPE);

विशेषता को केवल संबंधित क्षेत्र से ही प्राप्त किया जा सकता है। पोर्टलेट दायरे में विशेषता सेट के लिए समान है, हमें इसका उपयोग करके लाने की आवश्यकता है

PortletSession session = renderRequest.getPortletSession();
String attributeValue = (String) session.getAttribute("attribute-name", PortletSession.PORTLET_SCOPE);

इस दृष्टिकोण की प्रमुख सीमा अन्य पोर्टलेट के बीच, एप्लिकेशन स्कोप के बाहर साझा करने की कमी है। इसे दूर करने के लिए, <private-session-attributes liferay-portlet.xml <private-session-attributes को जोड़ने के लिए आजीवन विशिष्ट दृष्टिकोण है।

    <private-session-attributes>false</private-session-attributes>
    <header-portlet-css>/css/main.css</header-portlet-css>
    <footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
    <css-class-wrapper>{portlet-name}</css-class-wrapper>
</portlet>

सभी पोर्टलेट्स के लिए, जहाँ विशेषताओं को सेट और पुनः प्राप्त किया जाता है।

ईवेंटिंग सुविधा का उपयोग करना

ईवेंटिंग मेकेनिज़्म सार्वजनिक रेंडर का एक विस्तारित संस्करण है, जिसमें एडिटोनल फीचर के साथ कस्टम ऑब्जेक्ट्स को अन्य पोर्टलेट्स में पास करने की सुविधा है, लेकिन इवेंट चरण के ओवरहेड के साथ।

इसे प्राप्त करने के लिए, इस तंत्र में शामिल हैं

  1. प्रकाशक पोर्टलेट
  2. प्रोसेसर (उपभोक्ता) पोर्टलेट, जहां दोनों अलग-अलग पोर्टलेट एप्लिकेशन का हिस्सा हो सकते हैं।

साथ शुरू करने के लिए,

portlet.xml में प्रकाशक portlet.xml में <supported-publishing-event> टैग portlet.xml

    <security-role-ref>
        <role-name>user</role-name>
    </security-role-ref>
    <supported-publishing-event>
         <qname xmlns:x="http:sun.com/events">x:Employee</qname>
    </supported-publishing-event>
  </portlet>

portlet.xml में प्रोसेसर portlet.xml में <supported-processing-event> टैग portlet.xml

<security-role-ref>
        <role-name>user</role-name>
    </security-role-ref>
    <supported-processing-event>
        <qname xmlns:x="http:sun.com/events">x:Employee</qname>
     </supported-processing-event>
</portlet>

दोनों portlet.xml में <event-definition> टैग जोड़ें, ईवेंट-नाम को परिभाषित करें और portlet.xml में portlet.xml

<event-definition>   
  <qname xmlns:x="http:sun.com/events">x:Employee</qname>
  <value-type>com.sun.portal.portlet.users.Employee</value-type>
</event-definition>
   </portlet-app>

अगला हमें ईवेंट प्रकार (कस्टम प्रकार के मामले में) के लिए वर्ग बनाने की आवश्यकता है

public class Employee implements Serializable {
  public Employee() {
  }
  private String name;
  private int userId; 

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getUserId() {
    return userId;
  }
  public void setUserId(int id)
  {
    this.userId = id;
  }

}

अब, प्रकाशक पोर्टलेट में, घटना को कार्रवाई चरण में प्रकाशित करने की आवश्यकता है

    QName qname = new QName("http:sun.com/events" , "Employee");
    Employee emp = new Employee();
    emp.setName("Rahul");
    emp.setUserId(4567);
    res.setEvent(qname, emp);

पोस्ट हमने ईवेंट प्रकाशित किया है, इसे ईवेंट चरण में प्रकाशक पोर्टलेट द्वारा संसाधित करने की आवश्यकता है।

इवेंट चरण JSR 286 में पेश किया गया था और लागू होने पर पोर्टलेट के रेंडर चरण से पहले निष्पादित किया जाता है

@ProcessEvent(qname = "{http:sun.com/events}Employee")
public void processEvent(EventRequest request, EventResponse response) {

    Event event = request.getEvent();
    if(event.getName().equals("Employee")){
      Employee payload = (Employee)event.getValue();
      response.setRenderParameter("EmpName",
      payload.getName());
    }

}

फिर रेंडर अनुरोध के माध्यम से रेंडर पैरामीटर से प्राप्त किया जा सकता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow