How XAI implements 'get more' function in CC&B pages

Hi all,
There is a 'get more' button in CC&B page if you list more than 50 records, just clicking the button when I wanna get last records , but how should i implement the same function by XAI, I have researched much time about this issue and gotten nothing. so had Anybody here encounterd the same issue? and have solved it?
any help would be appreciated.

The get more function works in the browser becuase there is a seperate "list" servlet which retrievs the data. It relies on certain HTTP context data for correct operation. Unfortunately the "get more" function is not supported by the XAI Servlet (it does not about the HTTP context data). Your only option is to roll your own paging mechnaism for the data you require.
The pattern goes likes this...
1. Work out the SQL for what you want to paginate
2. Create a new "List Service" class that will act as the underlying service
3. Annotate the service with inputs which include the page size, and the page number you want to retrieve
4. Annotate the service with a list data that will be returned
5. Use the page size and page number to create and execute the query and build the return result
6. Register the service as an XAI Inbound Service
7. Deploy the code
8. Test using Dynamic Submission
eg. Here is an example of Get More for Lookup Values....
import com.splwg.base.api.BusinessEntity;
import com.splwg.base.api.SimpleEntityList;
import com.splwg.base.api.service.DataElement;
import com.splwg.base.api.service.ItemList;
import com.splwg.base.api.service.ListBody;
import com.splwg.base.domain.common.lookup.LookupField_Id;
import com.splwg.base.domain.common.lookup.LookupValue;
import com.splwg.base.domain.common.lookup.LookupValue_Id;
import com.splwg.base.support.service.metainfo.ListBodyField;
import com.splwg.shared.environ.ServiceListConstant;
import com.splwg.shared.logging.Logger;
import com.splwg.shared.logging.LoggerFactory;
* @author edhoi
@ListService (name = CmGetMoreListValues, size = 10000, program = CMLGETMRL, service = CMLGETMRL,
* body = @DataElement (contents = { @DataField (name = COUNTER)
* , @RowField (entity = lookupValue, name = lookupValue)}),
* headerFields = { @DataField (name = ELEM_SIZE)
* , @DataField (name = FIELD_NAME)
* , @DataField (name = FIELD_VALUE)})
public class CmGetMoreListMaintenance extends CmGetMoreListMaintenance_Gen {
     private static final Logger LOG = LoggerFactory.getLogger(CmGetMoreListMaintenance.class);
     @Override
     protected ItemList<DataElement> readList() {
          // Call CmGetMoreBusinessComponent
          CmGetMoreBusinessComponent cmGetMoreBusinessComponent = CmGetMoreBusinessComponent.Factory
                    .newInstance();
          LookupField_Id lookupField_Id = new LookupField_Id(getHeader().get(
                    CmGetMoreListMaintenance.STRUCTURE.HEADER.FIELD_NAME));
          LookupValue_Id lookupValueId = new LookupValue_Id(lookupField_Id,
                    getHeader().get(
                              CmGetMoreListMaintenance.STRUCTURE.HEADER.FIELD_VALUE));
          BigInteger pageSize = getHeader().get(
                    CmGetMoreListMaintenance.STRUCTURE.HEADER.ELEM_SIZE);
          LookupValue lastValue = lookupValueId.getEntity();
          List<LookupValue> values = cmGetMoreBusinessComponent
                    .getLookupValuePageData(lookupField_Id, lastValue, pageSize
                              .intValue());
          long count = cmGetMoreBusinessComponent
                    .countLookupValues(lookupField_Id);
          if (values.size() > 0) {
               lastValue = values.get(values.size() - 1);
          } else {
               lastValue = null;
          ItemList<DataElement> itemList = new ItemList<DataElement>(CmGetMoreListMaintenance.STRUCTURE.list_CmGetMoreListValues.name);
          ListBody listBody = itemList.newListBody();
          listBody.put(CmGetMoreListMaintenance.STRUCTURE.list_CmGetMoreListValues.COUNTER, new BigInteger(
                    Long.toString(count)));
          if(lastValue != null) {
               listBody.put(CmGetMoreListMaintenance.STRUCTURE.list_CmGetMoreListValues.FIELD_VALUE, lastValue.getId().getFieldValue());
          for (LookupValue value : values) {
               DataElement listElement= itemList.newDataElement();
               listElement.addRow(value.getDTO());
          return itemList;
     @Override
     protected void afterPopulateList_CmGetMoreListValues(
               ItemList<DataElement> targetList, SimpleEntityList sourceList,
               BusinessEntity sourceListParent) {
          // TODO Auto-generated method stub
          super.afterPopulateList_CmGetMoreListValues(targetList, sourceList,
                    sourceListParent);
}

Similar Messages

  • Clicking "Open a New Tab" button or "Ctrl+T" doesn't open a new tab any more. How do I get that functionality back?

    Clicking "Open a New Tab" button or "Ctrl+T" doesn't open a new tab any more. How do I get that functionality back?
    When I click, type or use the File menu or try right-clicking mouse to open a new tab, nothing happens. However I am able to open links in a new tab.

    The Ask Toolbar is causing that in the Firefox 3.6.13+ versions. Evidently something in that extension isn't compatible with a Firefox security fix. Disable that extension or un-install it.
    How do I "disable" or "un-install it"?

  • Today I updated the OX Maverisk. It turns out that the three finger gesture in the finder( go back and forward) is disabled. How can I get this function back? I love it so much!!!

    Today I updated the OX Maverisk. It turns out that the three finger gesture in the finder( go back and forward) is disabled. How can I get this function back? I love it so much!

    Try System Preferences/Trackpad/More Gestures.

  • How can I get this function to fire off last?

    In the following code, there are two buttons on the stage- "button1" and "button2". 
    I want to get the buttons to change frames and THEN have the "playerChange" function fire off.
    Currently, the "playerChange" function fires first. Moving the function  either renders the code inoperable or
    returns error messages.
    function buttonChange (e:MouseEvent)
    {if    
                    (e.target.currentFrame == "frame1" )
             if (e.target==button1) (playerChange)
                     (e.target.gotoAndStop(player.currentFrame + 1)) 
               else{player.gotoAndStop(player.currentFrame)
              if (e.target==button2)  (playerChange) 
                    (e.target.gotoAndStop(player.currentFrame + 1))
              else{player2.gotoAndStop(player2.currentFrame)
    button1.addEventListener(MouseEvent.CLICK,buttonChange );
    button2.addEventListener(MouseEvent.CLICK,buttonChange);
    Note:this is an abridged version of the code. The code I'm actually using uses 20 buttons and about 8 conditionals for each button, so e.target is more convenient than writing a command for each button.

A: How can I get this function to fire off last?

the code is very hard to understand
it's badly formatted
{}'s don't match
you aren't calling a playerChange function
this is my guess at something that might work for you
function buttonChange (e:MouseEvent)
          if(e.target.currentFrame == "frame1" )
                    if (e.target == button1)
                              e.target.gotoAndStop(player.currentFrame + 1);
                              playerChange();
                    else
                              player.gotoAndStop(player.currentFrame);
                              if (e.target == button2)
                                        e.target.gotoAndStop(player.currentFrame + 1);
                                        playerChange();
                              else
                                        player2.gotoAndStop(player2.currentFrame)
button1.addEventListener(MouseEvent.CLICK,buttonChange );
button2.addEventListener(MouseEvent.CLICK, buttonChange);

the code is very hard to understand
it's badly formatted
{}'s don't match
you aren't calling a playerChange function
this is my guess at something that might work for you
function buttonChange (e:MouseEvent)
          if(e.target.currentFrame == "frame1" )
                    if (e.target == button1)
                              e.target.gotoAndStop(player.currentFrame + 1);
                              playerChange();
                    else
                              player.gotoAndStop(player.currentFrame);
                              if (e.target == button2)
                                        e.target.gotoAndStop(player.currentFrame + 1);
                                        playerChange();
                              else
                                        player2.gotoAndStop(player2.currentFrame)
button1.addEventListener(MouseEvent.CLICK,buttonChange );
button2.addEventListener(MouseEvent.CLICK, buttonChange);

  • I updated to Maverick and now my outgoing gmail server states it is off line. How do I get it functioning?

    I updated to Maverick and now my outgoing gmail server states it is off line. How do I get it functioning?

    Hello there, HHLSATX.
    The following Knowledge Base article provides some great recommendations for troubleshooting your issue:
    OS X Mail: Troubleshooting sending and receiving email messages
    http://support.apple.com/kb/ts3276
    Of particular help would be the section using Connection Doctor:
    Open Mail Connection Doctor
    In Mail, choose Window > Connection Doctor.
    Tip: If you see a spinning gear in Mail or the Mail Connection Doctor, choose Window > Activity to learn what Mail is doing.
    Collapse All Sections | Expand All Sections (Or, click to a specific topic below that lists your issue.)
    The Connection Status at the top of the Mail Connection Doctor window shows a red dot () and "Mail was unable to connect to the Internet."
    Mail Connection Doctor shows all green dots () in the Status column
    Mail Connection Doctor shows one or more red dots () in the account Status column
    Thanks for reaching out to Apple Support Communities.
    Cheers,
    Pedro.

  • How do I get more text options in photoshop??

    How do I get more text options in Photoshop?  I have the basic package, but I would like more script options.
    Thank you,
       Maureen

    I don't suppose you have a full CC subscription?  It comes with a feature called Typekit which I love. Along with an ever increasing range of top quality fonts, it has the best font manager I have used, and excellent search facility.
    The web is full of additional font sites like dafont
    http://www.dafont.com/
    Otherweise, Google is your friend
    If you want Text Effects then Google will help you out there as well

  • How do i get more ios

    how do i get more ios

    The 2G can only go as high as iOS 4.2.1. You need iTunes 10 or later on the computer to update.

  • How do I get more space on my startup disk

    How do I get more space on my startup disk?

    Freeing Up Space on The Hard Drive
      1. See Lion's Storage Display.
      2. You can remove data from your Home folder except for the /Home/Library/ folder.
      3. Visit The XLab FAQs and read the FAQ on freeing up space on your hard drive.
      4. Also see Freeing space on your Mac OS X startup disk.
      5. See Where did my Disk Space go?.
      6. See The Storage Display.
    You must Empty the Trash in order to recover the space they occupied on the hard drive.
    You should consider replacing the drive with a larger one. Check out OWC for drives, tutorials, and toolkits.
    Try using OmniDiskSweeper 1.8 or GrandPerspective to search your drive for large files and where they are located.

  • How do i get more memory on my mac book air? is says that i can add 2 more gig how?

    how do i get more memory on my mac book air? is says that i can add 2 more gig ??? or wat files can i delete

    Macbook Air memory is soldered to the logicboard.
    You can only get 4GB or 8GB (2012 Models) in the Air when you order it that way.  Otherwise, you're stuck with 2GB.
    Unless you're talking about hard drive space - then it is upgradeable - click HERE to see which one corresponds to your model.

  • How do i get more memory installed on my macbook air

    How do i get more memory installed on my macbook air

    If you are referring to RAM, the Air's RAM is not an upgradeable component. The RAM memory is soldered to the main board, and there are no expansion slots.
    It is the price Air owners pay for miniaturization. Every Air is manufactured with all the memory it will ever have. Shop wisely.
    It is technically possible to upgrade the SSD storage though, but will probably void any warranty.

  • How do I get more memory on my IMAC .I have 1 GIG and to run LION you need 2 GIGS?

    How do I get more memory on my IMAC .I have 1 GIG and to run LION you need 2 GIGS?

    Depends on the Mac; what model and processor is it?
     > 'about this Mac' > 'more info'
    In the first section (hardware overview) post this info;
    Nothing below that is reqd, especially not the serial number.

  • How do I get more volume when watching a movie and can I use headphones?

    How do I get more volume when watching a movie? And can I also use headphones?

    Many governments now limit how loud headphones can go. Europe has been plagued with this for many years. Separate amplifiers are available.  
    I believe volumes should be kept at reasonable levels to avoid hearing loss, but it's not the governments job to protect me.
    I prefer Beyerdynamic over Bose Headphones. (They spend a lot less money on advertising.)
    http://www.amazon.com/beyerdynamic-DT770-PRO-250-ohm/dp/B0006NL5SM/ref=sr_1_1?s= electronics&ie=UTF8&qid=1308969660&sr=1-1

  • How do I get more with QuickVPN

    How do I get more out of QuickVPN?  I would like to be able to access more than the shared document files.  Can I run an application that is located on the Office computer from a remote location?  Can I get to "My Documents" without having to share the folder.  So many questions about how this works, with so little operating documentation.  I am kind of disappointed so far.  I have a WRV210 router with 4 network computers behind the router.  Would like to be able to set p 2-3 tunnels for various remote access computers.

    you can try using remote desktop in the computer (just search the internet on how to set-up RDP in your computers) -- this way you have control of more than files on the computers behind the router
    i vaguely remember reading something about using some software after connecting to QVPN but unfortunately, I cannot find it anymore

  • How do I get more the features?

    How do I get more features for my iMovie?

    You can't restore changes that are caused by removing support for features like happened with the status bar. Such changes can only be restored via an extension (Status-4-Evar). Other changes can be undone by toggling prefs or via code in userChrome.css that doesn't require an extension, but do require editing the userChrome.css file and adding specific CSS code.
    See this mozillaZine forum thread about "Fx4 .css tweaks":
    * http://forums.mozillazine.org/viewtopic.php?f=23&t=2057009
    You can right click the orange Firefox button to open the toolbar menu.
    * Click the Menu Bar entry to make the Menu Bar visible.
    * Click "Tabs on Top" to remove the check mark and place the Tab Bar at its original position just above the browser window.

  • I have just downloaded Elements 11 & there is only one frame (basic) in collage, how do I get more?

    I have just upgraded from Elements 7 to Elements 11 but find in the photo Collage there is only one frame, how do I get more, my old 7 had a good variety???

    Hi Wobygong5,
    I am afraid PSE11 has just one theme, ie. Basic.
    However you can go to Expert mode, and then create a new image of the size you want, and then insert frames from the Graphics panel. You can insert as many frames as you want.
    But Photo Collage will offer you just one theme.
    -Rahul.

  • Maybe you are looking for