Sharing parameters between 2 portlets

I have two seperate java applications, both of which have been turned into portlets with their own provider.
I need to pass parameters between the portlets and am trying to work out the best / most secure way to do this.
I know that if both portlets were in the same provider they could share providersession information. I could do this if i could change one of the provider files to link to a portlet in another jdeveloper application. I believe its not possible to have more then one portlet in a provider if the code for the second portlet is comming from a seperate jdeveloper application ??
I could also pass parameters through portlet / page parameters. The problem is that i don't want these parameters to appear on the URL. Am I correct in assuming that this type of parameter passing between portlets always means the parameter appears on the URL.
I heard of the java object cache as a method, but don't know where to start with this !!
Dows anyone a solution , to what must be a common problem ?

Hi Frewin,
Why cant you have both the portlets in the same JDeveloper project? You can have as many portlets as you wish to have within a single provider.
Frankly, you dont really need to rely only on jdeveloper :-) ...
thanks,
Harsha

Similar Messages

  • Passing parameters between portlets with in the same page

    Hello,
    I have created a Form and a report. The form allows a user to make some selection values, and then upon submit it passes the selected values to the report to query the database. The results from the query are displayed in a new - seperate - window from the form. Is there anyway to disaply the report results on the same page as the form that called the report? I guess I am trying to have a page with 2 portlets (a form, and a report). I want the user to be able to make a selection from the form portlet and pass that selection to the report portlet within the same page.
    Thanks,
    McKell

    Hi I received this info from an OSS named Mahantesh. I thought it was very helpful information for passing portlet parameters between a form and a report within the same page.
    Please check these steps to pass parameter from form to report:
    This article is based on demo tables EMP and DEPT.
    1. Create a report RPT_DEPT using the query 'Select * from dept where deptno= :deptno'
    2. Create a form FRM_EMP based on EMP table.
    3. Edit the form FRM_EMP => 'Formatting and Validation Options' section => click on DEPTNO field
    => Give the value for the 'Link' (under 'Display options') as 'javascript:runrep()' where runrep is the name<br>
    of javascript function that we are going to create later.
    4. In 'Form text' section, in the 'Footer Text' add the code for the runrep function as follows.
    <script>
    function runrep()
    var formObj = document.forms[0];
    var deptno;
    for (var i=0; i < formObj.length ; i++){
    if (formObj.elements.name == 'FORM_EMP.DEFAULT.DEPTNO.01'){
    //FORM_EMP is the form name
    deptno = formObj.elements[i].value;
    break;
    var url="/portal/page?_pageid=38,1,38_31678:38_31787&_dad=portal&_schema=<br>
    PORTAL&deptno=" + deptno;
    //modify the url according to your environment.<br>
    window.location=url;
    }<br>
    </script>
    5. Modify the URL in the above code with your page url on which form and report portlets have been placed.
    6. Goto Page properties => Parameters tab (Parameters and Events option should have been enabled at Pagegroup level).
    7. Create a page parameter and map it with report portlet parameter.
    8. Now run the page, enter deptno or query the form to get the deptno and click on the link next to deptno field. You should get report with corresponding deptno on the page.

  • Passing parameters between portlets (PL/SQL PDK)

    I'm new to the PDK, so forgive me if this is a dumb question. I need to develop a portal page containing a single search portlet, and then many other associated portlets which bring back various bits of data based on the result of the search.
    Is it possible to drive the content of other portlets on the same page by passing values from one to another and refreshing the whole page?
    null

    Neil,
    You can definitely pass parameters from one portlet to another in PL/SQL and we actually have a sample that you can take a look at. In the PDK, download the Parameter passing and CSS Example Provider sample. http://technet.oracle.com/products/iportal/files/pdkjan/index.html
    Click on PL/SQL
    One of the portlets demonstrates how to pass parameters to one portlet or all portlets on a page.
    Hope this helps,
    Sue

  • Passing Parameters between Portlets or pages

    Hi,
    How can we pass the data from a Portlet in one page to another Portlet in a different Page??
    Requirement: I want a portlet which should take some parameters(basically a form),On submit should process the parameters and should forward the result to a Portlet in another page.
    Regards
    Yash

    Yash,
    You could use session variables to save information that can be used during the browser session. Example would be the form asks a user for their nickname. The user types in his nickname and hits the submit button. The form will then save the info in a session variable. Then any other portlet can open that session variable and get the info and use that info. Now if the browser is closed, the info in the session variable is lost. Check out this link:
    http://portalstudio.oracle.com/pls/ops/docs/FOLDER/COMMUNITY/PDK/PLSQL/DOC/PLDOC_9026/wwsto_api_session.html

  • Passing parameters between portlets

    Hi , I have a page with two portlets : one , done with the wizard , is a form , the other one is another form , but is done with a JSP.
    My trouble is that with the second form , the one done with a JSP , I must insert into the database two values , one retrieved by the jsp itself , and the other one is a value of one field of the other form.
    My question is how can I get , from my jsp , that value coming from the other portlet ???
    Thanks
    max

    Hi,
    You can redirect to another page and pass parameters to it. For this, you need to know the pageid to which you have to redirect. Assign form action to
    http://machine:port/servlet/page
    PageServlet requires few other parameters (form fields) to redirect the control to the required page.
    You can get them by making a call to
    HttpPortletRendererUtil.htmlFormHiddenFields(pr,PortletRendererUtil.PAGE_LINK)
    This returns a string similar to the following.
    <INPUT TYPE="hidden" name="_pageid" value="54" />
    <INPUT TYPE="hidden" name="_dad" value="portal30" />
    <INPUT TYPE="hidden" name="_schema" value="PORTAL30" />
    Parse it for _pageid and change the value to the page you want to redirect. Print these contents inside your form. Once you submit the form, it'll redirect the control to the page you want with the parameters.
    --Sriram

  • Passing parameters between portletized ADF Faces applications, possible?

    Hello,
    In the developer guide, section 4.5.3 (http://download-east.oracle.com/docs/cd/B32110_01/webcenter.1013/b31074/jpsdg_pages.htm#CHDGGCGE) it says that you can synchronize portlets using an ADF Faces component value. However, that example do not use a value coming from a real portlet, the parameter come from a selectOneChoice define in the container page.
    Is there a way to achieve the same thing but with the selectOneChoice being placed in the WSRP 2.0 portlet? Basically the communication scheme is WSRP 2.0 to WSRP 2.0 which is something possible using URL parameters. However, the problem with JSF components is that they pass their values through a JavaScript launched POST submit so the values are never added to the URL and even worst, you cannot be sure of the generated parameter name as it depends on the context in which the component exists (mainly the presence of a parent NamingContainer) and the only way to know that parameter name for sure is to have a way to call component.getClientId(facesContext) which is impossible for the portlet container and therefore for the other portlets.
    To put it shortly, is there a way to send a navigation parameter from a portletized ADF Faces application to its container page beside using goButton and goLink (we need to keep the action/actionListener functionality)?
    Regards,
    Simon Lessard

    Can someone explain how to assign a value to a parameter in JSF like in the ParameterFormPortlet source code? Something in replacement of this :
        if (viewMode)
          // Set the new parameter values. These will be intepreted by the
          // container as navigational parameters as the names match the names of
          // the declared parameters.
          actionResponse.setRenderParameter(PARAMETER1, param1);
          actionResponse.setRenderParameter(PARAMETER2, param2);
          actionResponse.setRenderParameter(PARAMETER3, param3);
        }I mean, how to replace setRenderParameter to achieve the same thing inside a JSF binding bean for example. Is it possible via the PortletContext?
    Thanks in advance for any hint.
    Jean-Philippe

  • Passing multiple parameters between two report portlets on the same page

    Hi,
    I want to pass multiple parameters between two report portlets on the same page.
    I have been succussful passing a single parameter between two portlets. The
    following are the steps :
    (1) Created first report based on the query
    SELECT htf.anchor('http://192.168.0.84:7778/servlet/page?&_pageid=97&_dad=portal30&_schema=portal30&_mode=3&dept_code='||DEPTNO,DEPTNO) Department, ename FROM EMP;
    (2) Created 2nd report
    select * from EMP where DEPTNO = :dept_code
    (3) Added pl/sql code before display page on the 2nd report
    portal30.wwv_name_value.replace_value(
    l_arg_names, l_arg_values,
    p_reference_path||'.dept_code',portal30.wwv_standard_util.string_to_table2(nvl(g
    et_value('dept_code'),10)));
    (4) Created a page and added these reports as portlets.
    Sofar it works fine for one parameter (deptno) . Now I want to add one more
    parameter say empno to my first report query and would like to pass both the
    parameters deptno and empno to the 2nd report. Please tell me how to pass multiple parameters ?
    Thanks
    Asim

    Hi,
    You will have to do the same thing
    The select will be like this
    SELECT htf.anchor('http://toolsweb.us.oracle.com:2000/servlet/page?_pageid=97&_dad=mb&_schema=mybugs&_mode=3&dept_code='||DEPTNO||'&empno='||empno,DEPTNO) Department,ename
    FROM EMP
    In the additional plsql code do the same for empno like this
    mybugs.wwv_name_value.replace_value(l_arg_names,l_arg_values, p_reference_path||'.dept_code',mybugs.wwv_standard_util.string_to_table2(nvl(get_value('dept_code'),10)));
    mybugs.wwv_name_value.replace_value(l_arg_names,l_arg_values, p_reference_path||'.empno',mybugs.wwv_standard_util.string_to_table2(get_value('empno')));
    Thanks,
    Sharmila

  • Passing parameters from portlet reports to portlet forms

    Hi,
    I'm tring to pass parameters between a Report displayed as a portlet in a page ( page 1) and a form displayed in other page ( page 2).
    The problem is i can't do this.
    I only can pass parameters from a report ( running as normal or in a portlet displayed in a page) to a form running "normal" by using application links. Can i do this between a report that show's me every employees of scott.emp table. Then when i click on each employee, it open's me another page with the portlet form of the specified employee.
    I'm not sure i made myself clear. Please send me some feedback.
    Pedro

    I have the same problem. Please let me know if this could be done.
    In particular my form is a type of "Form on Table/View."
    Thanks
    Henry

  • Sharing jsp between multiple controllers

    Is there a way to share a jsp between 2 different controllers?
    If I put the shared jsp in its own directory and the 2 controllers in their own directories - I seem to be able to use netui:anchors and specifying the fully qualified "href" attribute - but not the "action" attribute. For example this works (but means I have to specify the exact controller):
    <netui:anchor href="/portlets/Controller1/findAction.do">
                find
    </netui:anchor>This does <b>not </b>work:
    <netui:anchor action="findAction">
                find
    </netui:anchor>Additionally, if I want a form to be on this shared jsp - I don't know of a way to use the netui tags to accomplish this... This example results in an error (as if it's trying to find the action in Global.app):
            <netui:form action="submitSharedForm">
                <table>
                    <tr valign="top">
                        <td>Foo:</td>
                        <td>
                        <netui:textBox dataSource="{actionForm.foo}"/>
                        </td>
                    </tr>
                </table>
                <netui:button value="submitSharedForm" type="submit"/>
            </netui:form>Are there other better techniques for sharing jsps between multiple controllers (jpf)? The only other thing I was thinking of trying to have a jsp found within the same directory as the controller include the shared jsp (which seems kind of tacky)...

    You may consider using a base pageflow controller that has the common JSPs
    in its directory. I have done that before like this:
    // inheritLocalPaths=true lets us inherit the JSPs from the base pageflow
    @Jpf.Controller(
    inheritLocalPaths=true
    public class MyChildController extends MyBaseController
    Ture Hoefner
    WebLogic Portal Engineering
    <Tim Rafert> wrote in message news:[email protected]..
    Is there a way to share a jsp between 2 different controllers?
    If I put the shared jsp in its own directory and the 2 controllers in
    their own directories - I seem to be able to use netui:anchors and
    specifying the fully qualified "href" attribute - but not the "action"
    attribute. For example this works (but means I have to specify the exact
    controller):
    <netui:anchor href="/portlets/Controller1/findAction.do">
    find
    </netui:anchor>This does <b>not </b>work:
    <netui:anchor action="findAction">
    find
    </netui:anchor>Additionally, if I want a form to be on this shared jsp - I don't know of
    a way to use the netui tags to accomplish this... This example results in
    an error (as if it's trying to find the action in Global.app):
    <netui:form action="submitSharedForm">
    <table>
    <tr valign="top">
    <td>Foo:</td>
    <td>
    <netui:textBox dataSource="{actionForm.foo}"/>
    </td>
    </tr>
    </table>
    >            <netui:button value="submitSharedForm" type="submit"/>
    </netui:form>Are there other better techniques for sharing jsps between multiple
    controllers (jpf)? The only other thing I was thinking of trying to have
    a jsp found within the same directory as the controller include the shared
    jsp (which seems kind of tacky)...

  • Hello there - how can I share my iTunes library between two users on the same computer? I put the library in a shared folder between both and have selected this library on both as well, but when I update iTunes with music etc it only appears on one?

    Hello there - how can I share my iTunes library between two users on the same computer? I put the library in a shared folder between both and have selected this library on both as well, but when I update iTunes with music etc it only appears on one?

    Thank you Joe - I tried this but it's only showing a teensy amount of music - the stuff on the second users account as opposed to the giagntic library on the 'main' account. I actually went to a Genius Bar and they said that apple doesn't really want you to share music between accounts - parents don't want to hear their kids music etc. Which seemed strange, but it might be the case sadly   Thanks anyway!

  • Sharing files between users and macs

    My husband and I share an iMac. I have a MBA for traveling and my husband a PC laptop (though he rarely uses for private stuff). We both have iPhones.
    We are looking for a way to:
    - Share our photos (we don't use iPhoto) and some files. We would like to have this in one shared folder, that we can access from both accounts in the iMac, the MBA and ideally (though not a must) the PC and iPhones. We would both need to have admin rights to edit documents, etc.
    - Have access to all the information in my account on the iMac from the MBA. Ideally, same thing for his and the PC.
    - Have access to all the data remotely when traveling.
    - Have all the data backed up locally (we already have a cloud backup, but we'd like to have a local backup too as it's easier and quicker to access)
    We have read a lot about configuration, NAS, time capsule... but we get more and more confused, as we are obviously no tech experts.
    Dropbox is not our preferred choice. We already have a cloud backup system. We'd rather have the files stored and accessed locally for everyday use.
    Using a NAS to store shared folders and backup the rest sounds good, but they either seem very complicated to set up, or they have mixed reviews in terms of stability, especially to access files remotely.
    Timecapsule seems easier and more straightforward, but I'm not sure it would solve the "sharing files between users and macs with admin rights"? It seems to be more focused on backing up the main drive and then providing access to the backed up files. (Though I might be completely mistaken!)
    We just can't manage to have one shared folder between both accounts in the iMac. We need to grant admin rights document by document. We don't manage to make it work automatically so we both have one folder to access with full rights for all the contents inside it. And this seems to me like something that should easily be done...?
    Any help, advice, proposals... would be greatly appreciated!!!

    Move any file you want to the other user to access to the Shared Folder. Anything you put in that folder is available to all users.
    The shared folder is here:
    Macintosh HD > Users > Shared

  • Sharing information between tiled view and view bean

    I have come across one more problem. I have a search result
    page. This search result page has a static text field and a repeated group
    (I simplified the page description, for explanation purpose). In the NetD
    implementation they are maintaining a page level attribute (say boolean
    haveSenisitiveCustomers) and setting this attribute in the
    afterDataObjectExecute event. (This data object is associated with the
    repeated). In end display event of static text field, they are displaying
    message say " due to Registration type, not all customers meeting the
    criteria are listed") if the haveSensitiveCustomers flag is set.
    After Migration, the boolean flag and static Text Field movedto
    SearchResultViewBean and afterDataObjectExecuteEvent has moved to
    TiledViewBean. Actual processing done is more complicated than this
    explanation. However, it boils down to sharing information between
    tiledViewBean and its parent bean. How do we achieve this in the Migrated
    Application?
    One way is to add getter methods in the child tiled view bean( to
    access in parent view bean, call getRepeated1 and cast to the actual type
    and invoke the get methods)Probably the typical solution (I say typical because I don't yet know) will
    be to do what you suggest: provide methods between views that can be used to
    determine the state needed for processing like this.
    However, let me alert you to something that's different than ND, and which
    may cause you some trouble. In ND, all retrieving DataObjects associated
    with a page executed at one time, and the afterDataObjectExcecuteEvent fired
    before any display processing began. However, in JATO, tiled views are
    independent objects, and any models associated with them only execute when
    the tiled view is first displayed.
    Therefore, if the static test field you refer to appears in the page before
    the tiled view, then the tiled view will not have executed its associated
    model before the static text field is rendered. You will never see the
    static text field display the text you want because you won't have the
    information at display time. (If the text field appears after the repeated,
    then it's not problem, as the display of the tiled view will have executed
    the associate model before the field displays.)
    The solution is to manually reference the tiled view and its associate model
    before they would normally execute. You would execute the model and set the
    tiled view's setAutoRetrieveEnabled() to false to prevent it from executing
    the model a second time. Perhaps the easiest thing to do would be this:
    beforeStaticTextDisplay(...)
    // Force the tiled view to execute the associated model
    Repeated1TiledView tiledView=
    (Repeated1TiledView)getChild("Repeated1");
    tiledView.beginDisplay();
    tiledView.setAutoRetrieveEnabled(false);
    Although the beginDisplay() method will be executed twice in this case (once
    deliberately, above, and later during actual display), there should be no
    overhead. The beginDisplay() method doesn't do anything anyway except
    execute associated auto-retrieving models and fire the
    afterAllModelsExecute() event.
    Mike, do you concur or have any comments?
    This explanation rests on the understanding of a number of other subjects,
    some of which you may not be fully familiar with. Feel free to ask further
    questions about this explanation.
    Todd
    Todd Fast
    Senior Engineer
    Sun/Netscape Alliance
    todd.fast@e...

    I have come across one more problem. I have a search result
    page. This search result page has a static text field and a repeated group
    (I simplified the page description, for explanation purpose). In the NetD
    implementation they are maintaining a page level attribute (say boolean
    haveSenisitiveCustomers) and setting this attribute in the
    afterDataObjectExecute event. (This data object is associated with the
    repeated). In end display event of static text field, they are displaying
    message say " due to Registration type, not all customers meeting the
    criteria are listed") if the haveSensitiveCustomers flag is set.
    After Migration, the boolean flag and static Text Field movedto
    SearchResultViewBean and afterDataObjectExecuteEvent has moved to
    TiledViewBean. Actual processing done is more complicated than this
    explanation. However, it boils down to sharing information between
    tiledViewBean and its parent bean. How do we achieve this in the Migrated
    Application?
    One way is to add getter methods in the child tiled view bean( to
    access in parent view bean, call getRepeated1 and cast to the actual type
    and invoke the get methods)Probably the typical solution (I say typical because I don't yet know) will
    be to do what you suggest: provide methods between views that can be used to
    determine the state needed for processing like this.
    However, let me alert you to something that's different than ND, and which
    may cause you some trouble. In ND, all retrieving DataObjects associated
    with a page executed at one time, and the afterDataObjectExcecuteEvent fired
    before any display processing began. However, in JATO, tiled views are
    independent objects, and any models associated with them only execute when
    the tiled view is first displayed.
    Therefore, if the static test field you refer to appears in the page before
    the tiled view, then the tiled view will not have executed its associated
    model before the static text field is rendered. You will never see the
    static text field display the text you want because you won't have the
    information at display time. (If the text field appears after the repeated,
    then it's not problem, as the display of the tiled view will have executed
    the associate model before the field displays.)
    The solution is to manually reference the tiled view and its associate model
    before they would normally execute. You would execute the model and set the
    tiled view's setAutoRetrieveEnabled() to false to prevent it from executing
    the model a second time. Perhaps the easiest thing to do would be this:
    beforeStaticTextDisplay(...)
    // Force the tiled view to execute the associated model
    Repeated1TiledView tiledView=
    (Repeated1TiledView)getChild("Repeated1");
    tiledView.beginDisplay();
    tiledView.setAutoRetrieveEnabled(false);
    Although the beginDisplay() method will be executed twice in this case (once
    deliberately, above, and later during actual display), there should be no
    overhead. The beginDisplay() method doesn't do anything anyway except
    execute associated auto-retrieving models and fire the
    afterAllModelsExecute() event.
    Mike, do you concur or have any comments?
    This explanation rests on the understanding of a number of other subjects,
    some of which you may not be fully familiar with. Feel free to ask further
    questions about this explanation.
    Todd
    Todd Fast
    Senior Engineer
    Sun/Netscape Alliance
    todd.fast@e...

  • Sharing photos between multiple users on one Mac

    I'm trying to figure out how to easily share photos imported in by one user to other users in my family on my mac. I'm assuming we don't have to import them multiple times. It seems cumbersome to this new mac user to share them. I find the issue with iTunes. Any help?

    HI Darien,
    Here are all the links I have for the different kinds of sharing:
    SHARING IPHOTO LIBRARIES
    Sharing libraries between users on the same local network
    You can also share a library on the same machine between users the same way.
    Sharing libraries between users on the same machine...
    -both users must have sharing enabled in their iPhoto Preferences
    -both users must be logged in and have iPhoto running
    -Remember that you can only view the other library. You can't edit the photos or play the saved slideshows or view the made books or burn them to CD or DVD. The books and slideshows will show up as an album. You can play that album as an "on the fly" slideshow. You can drag images from the sharing library to your library in the source column to import them to your library. You can then edit, add to albums, books, slideshow, etc.
    Sharing links from Apple....
    Sharing your photos between computers
    About shared photos
    Turning off photo sharing
    Looking for shared photos
    SHARING ONE IPHOTO LIBRARY BETWEEN USERS ON SAME MACHINE
    You can try one of these three methods:
    1- Use iPhoto Library Manager-the paid version
    The documentation page will give instructions on how it is done.
    2- Sharing one iPhoto library between several users on one machine
    3- Share an iPhoto Library in tiger Using ACL's
    4- I have also read about ShareAlike
    There is no other info on the site about how it works.
    I strongly urge anyone wanting to try any of the methods for sharing one iPhoto Library folder among more than one user to backup all iPhoto Library folders before attemptin anything.

  • OBIEE 11G - Issue passing parameters between two reports

    Hi folks,
    I am struggling to pass parameters between two reports in OBIEE 11G.
    My first report contains the following columns: Rolling Year Type (VCHAR), Year(VCHAR), Month(VCHAR), Cost(Double).
    My second report contains the following columns: Rolling Year Type(VCHAR), Year(VCHAR), Month(VCHAR), Category(VCHAR), Cost(Double).
    My requirement is to pass the Rolling Year Type, Year and Month values from report 1 to report 2.
    On the Month column properties of report 1, I have created an Action Link called 'Drill to Category'. I have clicked on 'Navigate to BI Content' and selected Report 2.
    Then on Report 2, I have included three filters: Rolling Year Type is prompted, Year is prompted, Month is promted.
    When I run the report I always get the following error:
    The specified criteria didn't result in any data. This is often caused by applying filters and/or selections that are too restrictive or that contain incorrect values. Please check your Analysis Filters and try again. The filters currently being applied are shown below.
    When I check the cursor cache, the filter values are correct. Does anybody have any idea why Report 2 does not display?
    When I remove the Month filter, the report works correctly.
    I have since changed the third filter to be Month No and although Report 2 does display, it does not pick up the filter on the Month No.
    I initially thought this may have been a caching issue and so I have disabled BI Server Cache but this does not fix my problem.
    This was never an issue on OBIEE 10G as I found it very easy to navigate between two requests.
    Has anyone else experienced problems with passing parameters between two request in 11G?
    Any help appreciated.
    Thanks
    Gavin

    Hi,
    I once tried this kind of requirement(with dashboard prompts though) and hit at similar issue. I later found out that the problem is with the space in the parameter values. Can you please let me know, if the same is the case with you?
    Suppose the parameter passed is "Jan 2010", but the report on the destination takes the value as "Jan" & "2010". Yes, it kind of split the parameter value to two based on space. I think we can notice the filters the destination report got, by enabling filter view.
    In this case, since you pass only value at a time, could you try placing the parameter value anyway in double quotes? I think the Server then will understand it as one value.
    Thank you,
    Dhar

  • Passing parameters between views in different Web Dynpro applications

    Hi everyone,
    I would like to pass the value of one parameter between one view in a webdynpro application and another view that is in other webdynpro application. How can I do this in a secure way?

    Hi,
    Check below links for passing parameters between two applications:
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b083f76a-708c-2b10-559b-e07c36dc5440
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/91b6ad90-0201-0010-efa3-9626d2685b6e
    Re: Pass parameters via POST in WDPortalNavigation.navigateAbsolute method
    Regards,
    Anagha

Maybe you are looking for