Query parameters / page navigation

Hi,
I have a problem which i don't know how to solve with JSF. Is it somehow possible to have a action which reacts on the first request to a page (like it is with struts actions).
Here is my example:
I have two JSF pages. The first page (search.jsp) has a form for searching a person with a id. The second page (show.jsp) shows the data about one person.
There is a commandButton on search.jsp which calls a action method on my model bean. This action calls the business logic for getting the data about the person. It does either return "success" or stores a FacesMessage in the context and returns null if the id is invalid. I've set up proper navigation rules for navigating to show.jsp if the action method returns "success".
This works fine. And now my problem... The users wants to have the possibility to set a bookmark for directly accessing the data about a person (ie. .../search.faces?id=12121). If the id is passed as query parameter, the application should behave as if he entered the data in the form. (navigate to show.jsp if the id is correct or navigate to search.jsp and display a message if the id is wrong).
Does anybody know how to solve this problem?
I think that the problem is that JSF actions reacts on on a user action while struts reacts on HTTP requests.
The only way i got it working was with some javascript-code which submits the form automatically if the id is passed as query parameter (using the onLoad event of the HTML body). I would like to solve it with another way because it does not work if javascript is disabled and it looks like a hack and not like a proper solution.
Regards,
Matthias

Hi,
Thanks for your response.
Do you have an example of your approach?
IMHO, a Non-Faces Request does directly pass to the "Render Response" Phase (http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSFIntro10.html). Therefore, it is not possible to call the Navigation handler for for determining the next view after calling the business logic.
Regards,
Matthias

Similar Messages

  • Print, Export and Page Navigation Buttons in the Report

    When I view a report through CR4E, the generated report has 3 buttons namely Print, Export and Page Navigation buttons. But when I click on either of the buttons I get a 'null pointer exception'. This is a critical error as I am unable to navigate past the first page. Do I have to add code to these buttons? If not, why am I getting an error? Kindly solve my problem as soon as possible.

    <p>Looking at your code it appears that you are storing the ReportSource in session prior to passing in the ResultSet. This will create a problem when a postback is made on  the viewer page (which all of the viewer actions do). If you look at the sample code which is generated when you use the JSP Page Wizard you will notice that the ResultSet is passed to the ReportClientDocument object prior to it being stored in session. Then, when the page is called again this object is retrieved and the ReportSource is used by the viewer. You can quickly run the test using one of our sample reports to see what I am talking about. The code below was generated using the Consolidated Balance Sheet.rpt and did not experience any problems doing any of the viewer actions.</p><%@page import="com.businessobjects.samples.JRCHelperSample,<br />com.crystaldecisions.report.web.viewer.CrystalReportViewer,<br />com.crystaldecisions.reports.sdk.ReportClientDocument,<br />com.crystaldecisions.sdk.occa.report.application.OpenReportOptions,<br />com.crystaldecisions.sdk.occa.report.lib.ReportSDKExceptionBase,<br />com.crystaldecisions.sdk.occa.report.reportsource.IReportSource,<br />java.sql.Connection,<br />java.sql.DriverManager,<br />java.sql.ResultSet,<br />java.sql.SQLException,<br />java.sql.Statement"%><%<br /><br /><br />    try {<br /><br />        String reportName = "Sample Reports/Consolidated Balance Sheet.rpt";<br />        ReportClientDocument clientDoc = (ReportClientDocument) session.getAttribute(reportName);<br /><br />        if (clientDoc == null) {<br /><br />            clientDoc = new ReportClientDocument();<br />            <br />            // Open report<br />            clientDoc.open(reportName, OpenReportOptions._openAsReadOnly);<br /><br />  <br />            {<br />                // **** POPULATE MAIN REPORT ****<br />                {<br />                     // Connection Info for fetching the resultSet<br />                    String connectStr = "jdbc:derby:classpath:/Xtreme";<br />                    String driverName = "org.apache.derby.jdbc.EmbeddedDriver";<br />                    String userName = "dbuser";        // TODO: Fill in database user<br />                    String password = "dbpassword";    // TODO: Fill in valid password<br /><br />                    String query = "SELECT CUSTOMER_NAME FROM APP.CUSTOMER WHERE COUNTRY = &#39;Australia&#39;";<br /><br />                    <br />                    String tableAlias = "FINANCIALS";        // TODO: Change to correct table alias<br /><br />                     <br />                    JRCHelperSample.passResultSet(clientDoc, fetchResultSet(driverName, connectStr, userName, password, query),<br />                        tableAlias, "");<br />                }<br /><br /><br />            }<br />        <br />            // Store the report document in session<br />            session.setAttribute(reportName, clientDoc);<br /><br />        }<br /><br /><br />            {<br />                // Create the CrystalReportViewer object<br />                CrystalReportViewer crystalReportPageViewer = new CrystalReportViewer();<br /><br />                //    set the reportsource property of the viewer<br />                IReportSource reportSource = clientDoc.getReportSource();                <br />                crystalReportPageViewer.setReportSource(reportSource);<br /><br />                // set viewer attributes<br />                crystalReportPageViewer.setOwnPage(true);<br />                crystalReportPageViewer.setOwnForm(true);<br /><br />                // Process the report<br />                crystalReportPageViewer.processHttpRequest(request, response, application, null); <br /><br />            }<br />            <br /><br />    } catch (ReportSDKExceptionBase e) {<br />        out.println(e);<br />    } <br />    <br />%><%!<br />// Simple utility function for obtaining result sets that will be pushed into the report.  <br />// This is just standard querying of a Java result set and does NOT involve any <br />// Crystal JRC SDK functions. <br /><br />    private static ResultSet fetchResultSet(String driverName,<br />            String connectStr, String userName, String password, String query) throws SQLException, ClassNotFoundException {<br /><br />        //Load JDBC driver for the database that will be queried    <br />        Class.forName(driverName);<br /><br />        Connection connection = DriverManager.getConnection(connectStr, userName, password);<br />        Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);<br /><br />        //Execute query and return result sets<br />        return statement.executeQuery(query);<br /><br />}%><p>Try using the code generated from the wizard to see if it works for you as well. </p><p>Regards,<br />Sean Johnson (CR4E Product Manager) </p>

  • Using Reporting Services Web Service methods to run a report with query parameters

    I'm attempting to use the ReportExecutionService methods to process a report that contains four parameters,  two of them query parameters. In total, the report must execute two queries. The two query parameters are determined by the execution of
    the second query.
    So, I've read about GetExecutionInfo and SetExecutionParams. To quote the MSDN page for GetExecutionInfo, "Use this method iteratively with the SetExecutionParameters method to evaluate parameters that have query- or expression-based defaults."
    Can anybody explain how to use this, or any other method, to execute a report such as mine? The first query gets the rows of the report; the second query gets the row count. LoadReport does not seem to do the trick by itself. I need to use the technique
    described in the quote above, I think.
    I could really use some help. Thanks!

    Hello,
    If I understand correctly, you create a local report which choose report from Report Server. You have two query parameters in the report which are returned by stored procedure. Currently, you cannot get default values for these parameters when run the report.
    Based on my test, if we haven’t configure these parameter with Available Values, we can reproduce the same issue. Also, caching issue may cause the same issue. If the issue is persist, please delete the corresponding report in the report server. Then, redeploy
    it to check.
    There is a similar issue, you can refer to it.
    http://social.msdn.microsoft.com/Forums/en-US/6a548d65-35d0-4a3e-8b64-3b7b655c76ee/ssrs-2008-report-parameter-default-value-doesnt-work-when-deployed
    Regards,
    Alisa Tang
    Alisa Tang
    TechNet Community Support

  • Data Components && Query Parameters

    I just started playing with the database binding since I use PostgreSQL. I have a couple questions around parameters. Let's say that I want to make a page to display / update configuration variables from my application. I have a table in my database called config, with two simple members ckey and cvalue. Let's say I have 20 key / value pairs.
    I want my page to simply load the values associated with all 20 keys into 20 different text boxes. I created a query with the WHERE clause being WHERE ckey = ?. Now, I've seen some posts that say that I have to have a Session Bean parameter to populate this ? -- is this correct? Can't I have a simple keyword somewhere since this parameter will be fairly static for each of my 20 text boxes? Could I just name each text box the associated ckey name?
    Secondly, how do I go about letting the data components update and validate this data if it is changed? The tutorial didn't show me much. Thanks.

    Hi,
    Please take a look at the AppModel sample application. This is available at:
    http://developers.sun.com/prodtech/javatools/jscreator/reference/codesamples/sampleapps.html
    This sample application demonstrates many features including how to handle the query parameters and how to update etc.
    Hope this helps
    Cheers
    Giri :-)
    Creator Team

  • How to achieve Page Navigation in af:table component

    I am using JDeveloper 11.1.1.3.
    I have a requirement for which i dont know how to proceed. Please guide me on the below requirement.
    I have an af:table component which displays a list of all the employees from the database. The total number of records in my database is 300(employee table).
    So my af:table component while displaying the Employee view object displays all the 300 employees when i scroll down the list.
    But i dont want the user to scroll down to see all the employees. In the af:table footer i want the page navigation option to be shown which will allow the user to see 10 records per page. When the user clicks on the next button , the af:table should display the next 10 records of the view object.
    Kindly help me or guide me to some reference material on how can i achieve this.
    Zeeshan

    There is no out-of-the-box table pagination in ADF 11g, the scroll-table is the way to go. New content is fetched only as needed when the user scrolls down the list. You can use the table's column filters or a separate search query component to make it easier to find employees on the list.
    See previous discussions, e.g. Urgent!! Pagination in ADF 11g.. and ADF Faces - Table Navigation in 11g

  • Previous page navigation after on click of cancel button of a form in adf

    Hi,
    Can any one tell how previous page navigation works in adf?
    I am working on a portal page which is having a common footer for all jspx pages.This footer contains a golink for feedback form.
    so the problem is when I Navigate to any page (# page 1)and then Navigate to some other page (#page 2) and on click of Feedback link displayed on footer of page 2 Feedback form is displayed. and on Click of Cancel button of the form.
    Expected Result:
    User should be navigated to the page that they were on. (i.e., Page 2)
    Actual Result:
    User is navigated to page 1 instead of page 2
    i.e it is taking browser previous url.
    I am using the following code for the cancel button
    <af:commandLink text="Cancel" id="cl5">
    <af:clientListener method="goBack" type="click"/>
    </af:commandLink>
    java script....
    function goBack()
    window.history.back()
    Edited by: 993530 on Apr 23, 2013 3:35 AM

    Hi,
    Immediate = true is already been set for cancel button
    The problem is when i come back to the 1st page vo is getting executed again and is taking lot of time.. i need to see that vo does not get executed again
    in the vo for view criteria -- query execution mode , i have made as in memory and now it has become fast on click of cancel button. But i am getting the following error when i perform search in the first page
    Missing FROM in a SELECT statement
    An unexpected expression token is found.
    Thanks,
    .

  • Page navigation - i know you have seen this before

    I have been researching page navigation for a couple of days unsuccessfully for a situation like this
    "select * from tableX" where tableX has 1M records and I want them to be presented in groups of 10 "as google does" (WWGD)
    Environment: DB2 7.x z/os using servlets
    Among the solutions that I looked up were
    1. Retrive all rows and store in session which in my case will not work. I think valuelistHandler operates like this.
    2. Do a query everytime u want a next page
    3. Query first 100 rows in session and then page thru them and then query next 100 upon request.
    option 2 or 3 are valid for me but my problem is with db2. db2 does not have ROWID as oracle, it does not have "limit 10,20" as mysql. So the question is "how can i get rows 20 to 30 in one request; and so on. I am sure that this is the most common db question but i am new to db programming.
    I would appreciate links, ideas, complete code (no flames please), anything. need to get this done soon.
    thanks in advace.
    TP.

    a nice link discussing this topic at java ranch
    http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=7&t=011247
    steve -
    http://www.fdsapi.com - The easiest way to generate dynamic xml and html
    http://www.jamonapi.com - A fast, free performance tuning and scalability measuring API

  • Page navigation - current page loss

    Hi All,
    I have a page navigation logic block atm.
    I'm outputting a maximum of 6 records per page (videos). I have set up startrow and endrow. When the user clicks next page and selects a video to play it reverts back to the first page (does play the right video though).
    Heres the page:
    http://www.ukagriculture.com/multimedia/farming_pictures.cfm?strVidSubCategory=Forage%20cr ops&strClient_Name_UKA=&strVidCategory=Videos&multimedia=no
    query code:
    <CFQUERY NAME="GetVids" DATASOURCE="">
    SELECT * FROM videos_table WHERE strVidSubCategory = '#URL.strVidSubCategory#'
    ORDER BY strOrder_id
    </CFQUERY>
    <CFIF #ParameterExists(StartRow)# IS "No">
      <CFSET StartRow = 1>
      <CFELSE>
      <CFSET StartRow = (StartRow + 6)>
    </CFIF>
    <CFSet EndRow = StartRow + 5>
    <CFIf EndRow GT GetVids.RecordCount>
        <CFSet EndRow = GetVids.RecordCount>
    </CFIf>
    output navigation code:
    <cfoutput query="GetVids" STARTROW=#StartRow# MAXROWS=6>
    <CFIF LEN(strDescription) gt 40>
      <CFSET desctrunc = LEFT(strDescription,40)>
      <cfelse>
      <CFSET desctrunc = strDescription>
    </CFIF>
    <div id="vidthumb1">
    <a href="farming_pictures.cfm?strVidSubCategory=#URLEncodedFormat(strVidSubCategory)#&strCli ent_Name_UKA=#URLEncodedFormat(strClient_Name_UKA)#&strVidCategory=#strVidCategory#&multim edia=no&strFlashVideo=#strFlashVideo#"><img src="mm_videos/#strImage#" alt="" width="100" height="90" class="handcursor" border="0">
    </a>
    <br />
      <span class="thumbtext">#desctrunc#</span></div>
    </cfoutput>
    <cfoutput>
    <p align="center">Displaying video<cfif GetVids.RecordCount EQ '1'><cfelse>s</cfif> #StartRow# to #EndRow# <cfif (StartRow + 5) LT GetVids.RecordCount><a href="farming_pictures.cfm?StartRow=#StartRow#&strVidSubCategory=#URLEncodedFormat(strVid SubCategory)#&strClient_Name_UKA=#URLEncodedFormat(strClient_Name_UKA)#&strVidCategory=#st rVidCategory#&multimedia=no">next page>></a></p></cfif>
    </cfoutput>
    I would like to retain the current page the user is on when they select a video from the 2nd/3rd/4th pages etc..
    TIA
    Trevor

    Trevor,
    Would incorporating the URL key/value pair for StartRow=#StartRow#& to the first link in your output do the trick?

  • Page Navigation toolbar is displayed at the top twice

    Hi all,
    I am viewing report through JRC in my application. My apllication is developed using weblogic 8.1.
    while viewing page navigation toolbar is displayed twice.
    i.e
    toolbar which has to be displayed at the bottom is also displayed at the top.
    But it is perfectly working if i run using eclipse with tomcat.
    Can anyone help me to rectify this problem!!!!
    Thanks in advance
    Saravanakumar

    Hello Saravana,
    I recommend to post this query to the [.Java Development - Crystal Reports|SAP Crystal Reports, version for Eclipse; forum.
    This forum is dedicated to topics related to custom application development or deployment with Crystal Reports in Java.
    It is monitored by qualified technicians and you will get a faster response there.
    Also, all Crystal Reports Java Development queries remain in one place and thus can be easily searched in one place.
    Thanks a lot,
    Falk

  • Managing beans based on URL query parameters

    I was just reading this thread with interest, but it didn't come to the conclusion that I need.
    http://forum.java.sun.com/thread.jsp?forum=427&thread=441432
    In that thread, there were two screens: a table of links to employees and an "edit employee" page. The solution was to use the command_action on the list create an "employee data" bean, which could then be edited on the "edit employee" page.
    My problem is that I need to create some session beans based on query parameters in the URL. Using the example above, I'd have something like: http://localhost/app/editEmployee?empNo=38
    Why? Because the user can bookmark the edit employee page, have two
    browser windows open (which would require two seperate employee data beans), etc... and we need to handle that. It looks like
    that means I can't use the solution in the above thread.
    My current thought is to create a managed-bean with request scope and have it create the EmployeeData bean.
    Another idea is to somehow initialize the bean with managed-properties
    <managed-bean>
        <managed-bean-name>EmpBean</managed-bean-name>
        <managed-bean-class>com.mycompany.EmpBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
        <managed-property>
            <property-name>employeeID</property-name>
            <value-ref>queryParamBean</value-ref>
        </managed-property>
    </managed-bean>
    <!--
      just returns FacesContext.getCurrentInstance().getServletRequest().getParameter("id")
    -->
    <managed-bean>
        <managed-bean-name>queryParamBean</managed-bean-name>
        <managed-bean-class>com.mycompany.QueryParamBean</managed-bean-class>
        <managed-bean-scope>none</managed-bean-scope>but that seems kinda hacky. Any other ideas?

    Excellent, using requestScope gets rid of the queryParamBean hack from my first post. For some reason I thought value-ref evaluatations only resolved against stuff the VariableResolver can see. That's not the case. Thanks.
    Unfortunately, this bean really wants to be cached on the session, not the request. I suppose it would be possible to have EmpBean delegate to a bean which is actually cached on the session, but that feels like a hack too (and is a lot of glue code).
    So, I think I'm back to the factory, which can handle creating the bean from the query params, caching it, and putting it on the servlet request. I also got a visit from Captain Obvious and realized that the factory could just be a scriplet.
    <% BeanCreator.createBean("com.company.EmpBean", request.getParameter("id")); %>which also isn't great, but is perhaps easier to understand than the BeanCreator from above. I looked into using EL Functions in the variable resolver for the factory, but it doesn't look like that's possible. It's probably possible to extend VariableResolver to add factory methods for managed-beans, which might be the cleanest solution. I'm thinking something like
    <managed-bean>
      <managed-bean-name>Emp</managed-bean-name>
      <managed-bean-factory>
         <factory-name>com.company.BeanFactory.getBean</factory-name>
         <bean-class>com.company.EmpBean</bean-class>
         <arg-value-ref>sessionScope.id</arg-value-ref>
      </managed-bean-factory>But for now, the current two hacks are:
    #1: to create a URL use plain html <href>.
    #2: use a factory method (varying implementions) to create the bean, cache it, and put it on the servlet request

  • Page navigation in Acrobat does not match page numbers in the document

    I have a document in both Framemaker format (server.book) and PDF (server.pdf).  When I view the pdf file in Adobe Acrobat, the page numbers appear correctly on the document itself, but up in the Page Navigation window within Acrobat the pages number doesn't match.
    In the beginning of the book I have Title page, a Table of Contents, and a Preface that all use lower-case roman numerals.  However, when viewing this document via Acrobat, the Title pages show up as i, and ii, but then the Table of Contents and Preface show up as pages 1 - 8 instead of iii - x in the page navigation window.
    I can't figure where this discrepancy is originating. 
    Please help.

    Acrobat has no way to know which bit of character string on each page is the page number.
    The visible page number has never formed any part of Reader nav. as you point out, it couldn't.
    Acrobat knows the Numbering Properties of the pages as created in Frame. It just doesn't display or honor them consistently, depending on Reader version.
    I also use i, ii, iii, iv for pre-narrative material. The romans are displayed in the page number box of Acroread (this is AR7 on Unix). I can enter "ii" in the box, and go to that page. But the Print dialog is Ordinal only. Printing page ranges in AR7 is always off by 2 or 4 relative to the actual page numbers.
    Acrobat Pro 9 (9.4.5, Win7-64) seems to be more consistent, and does show and accept real page numbers for Print.

  • How to handle a large number of query parameters for a Browse screen

    I need to implement an advanced search functionality in a browse screen for a large table.  The table has 80+ columns and therefore will have a large number of possible query parameters.  The screen will be built on a modeled query with all
    of the parameters marked as optional.  Given the large number of parameters, I am thinking that it would be better to use a separate screen to receive the parameter input from the user, rather than a Popup.  Is it possible for example to have a search
    button on the browse screen (screen a) open a new screen (screen b) that contains all of the search parameters, have the user enter the parameters they want, then click a button to send all of the parameters back to screen a where the query is executed and
    the search results are returned to the table control?  This would effectively make screen b an advanced modal window for screen a.  In addition, if the user were to execute the query, then want to change a parameter, they would need to be able to
    re-open screen b and have all of their original parameters still set.  How would you implement this, or otherwise deal with a large number of optional query parameters in the html client?  My initial thinking is to store all of the parameters in
    an object and use beforeShown/afterClosed to pass them between the screens, but I'm not quite sure how to make that work.  TIA

    Wow Josh, thanks.  I have a lot of reading to do.  What I ultimately plan to do with this (my other posts relate to this too), is have a separate screen for advanced filtering that also allows the user to save their queries if desired. 
    There is an excellent way to get at all of the query information in the Query_Executed() method.  I just put an extra Boolean parameter in the query called "SaveQuery" and when true, the Query_Executed event triggers an entry into a table with
    the query name, user name, and parameter value pairs that the user entered.  Upon revisiting the screen, I want the user to be able to select from their saved queries and load all the screen parameters (screen properties) from their selected query. 
    I almost have it working.  It may be as easy as marking all of the screen properties that are query parameters as screen parameters (not required), then passing them in from the saved query data (filtered by username, queryname, and selected
    item).  I'll post an update once I get it.  Probably will have some more questions as I go through it.  Thanks again! 

  • Using Form to pass value to query parameters in the selct part of query

    I created a form in Access 2007 to pass 2 values to an Access query.  I am doing this to create delimited output (very large) with the parameters included in the selected data. The select works and is something like this:
    SELECT "^"+!FORM!EXPORT2DAT!PREF_VALUE+"_"+Replace(UCase([column_1])," ","_")+"^|" AS OUTPUT_column1, "^"+!FORM!EXPORT2DAT!COMPANY_VALUE+[COLUMN_3]+"
    ([COMPANY_VALUE])"+"^|" AS OUTPUT_column2,....................
    The form has text boxes for the values I want to pass PREF_VALUE and COMPANY_VALUE to the query parameters, and an execute button to open the query when clicked.
    However when I enter the values and click the execute button, I still get the parameter boxes for the 2 parameters. 1 for this: !FORM!EXPORT2DAT!PREF_VALUE, and FORM!EXPORT2DAT!COMPANY_VALUE. I thought I was filling in with the form text box values.
    Can I use the form's text boxes to pass values to concatenated using(+) columns in the select part of the query as I'm doing above?
    Thanks in advance for your response.

    I have never seen a select statement like that! 
    For query criteria I would use this --
       [FORMS]![EXPORT2DAT]![PREF_VALUE]
                   and              [FORMS]![EXPORT2DAT]![COMPANY_VALUE]
    Build a little, test a little

  • "Source not found" Error creating URL Data control with query parameters

    Hi,
    I have a restful service for which i want to create a URL data control. I am able to create the URL data control successfully when i am not passing any parameters in the Source field. But if i am specifying the parameters in the source field like this Department=##ParamName##, something weird is happening. After giving the param string in the Source field, it asks for default param value to test the url. It tests the url successfully. After that i select XML as the data format in which i am mentioning the xsd like this . "file:///C:/..../something.xsd" . And this is when i am getting the error. "Invalid Connection. The source is not found". I am giving exactly same path for xsd which i gave while creating URL data control without query parameters. Infact i was able to create the URL data control with query parameters successfully till afternoon. after that it started giving me this error all of a sudden. Infact as soon as i was able to create a URL data contol with query parameter successfully, i took a backup of the application before moving further. But even that backup is not working now.
    As far as i understand, i dont think there will be any change in xsd if query params are passed to a web service. Please correct me if i am wrong.
    Just dont know what could be the issue. Please help
    Thanks

    Hi,
    xsd is used for the URL service to know what the returned data structure is so it can create the ADF DC metadata
    Frank

  • 11g Forms Tab-Page Navigation

    I am using Forms 11g on Solaris.
    A main navigator form opens another form which has a content canvas, tab-page canvas and (3) stacked canvases.
    The problem I am having is with tab-page navigation.     CTRL+TAB ( next ) and CTRL+SHIFT+TAB ( previous )
    As long as I do not initiate navigation from an item on a stacked canvas, navigation is as expected ( between tab pages only ).
    However, navigating from an item within a stacked canvas causes navigation to the parent form.
    Repeating the tab navigation keys from the parent form returns to the called form.
    Note that both key-combinations simply toggle back and forth.
    I have found no documentation on tab-page navigation so any help / insight is greatly appreciated !
    Mike

    Hi Soofi !
    Changing block order in the called form does not affect the navigation between tab pages.
    Note in my question that the resulting undesired navigation is to and from the calling form ( which only has one block ).
    Navigation between items and blocks works as expected.
    To reiterate -
         The only navigation that fails is when I attempt to CTRL+TAB or CTRL+SHIFT+TAB to another tab page from within an item on a stacked canvas.
         Attempting this navigation results in moving the cursor focus to the calling form.
         Repeating the attempt from the calling form moves back to the called form.
         None of your methods mention navigation between forms .
    Thanks for your interest.

Maybe you are looking for