Setting Checkbox & Radio session state (AJAX)

These functions will set the session state of a checkbox and radio items using Ajax.
Any feedback is welcomed!
// AJAX Checkbox Session
function setCheckboxSession('P1_CHECKBOX'){
     var get = new htmldb_Get(null,html_GetElement('pFlowId').value,null,0);
     get.add(pSource,html_CheckboxValue('P1_CHECKBOX'));
     gReturn = get.get('XML');
     get = null;     
function html_CheckboxValue(pItemId){
     var boxes=html_GetCheckbox(pItemId);
     var l_val='';
     for (var j=0;j<boxes.length;j++){
          if (boxes[j].checked){
               l_val = boxes[j].value;
               break;
     for (var i=j+1;i<boxes.length;i++){
          if (boxes.checked){
               l_val = l_val+':'+boxes[i].value;
     return l_val;
function html_GetCheckbox(pItemId){
var l_array=new Array();
var re=new RegExp('^'+pItemId.toUpperCase()+"_[0-9]+$");
var inputs=document.getElementsByTagName('input');
for (var j=0,l=inputs.length;j<l;j++)
if (inputs[j].type=="checkbox" && inputs[j].id && inputs[j].id.match(re))
l_array[l_array.length]=inputs[j];
return l_array;
// AJAX Radio Session
function setRadioSession('P1_RADIO'){
     var get = new htmldb_Get(null,html_GetElement('pFlowId').value,null,0);
     get.add(pSource,html_RadioValue('P1_RADIO'));
     gReturn = get.get('XML');
     get = null;

check this
Re: Modifying session state with javascript

Similar Messages

  • Javascript setting value in session state

    I have a javascript that figures our the interest rate for a mortgage loan based on principal balance, term and monthly payment. The script also rounds up to the nearest 8th. Here is the line code that sets the value on the APEX form:
    document.getElementById('P2_NOTE_RATE_TO_PITIA_31').value = cRate.toFixed(3);
    Obviously this line code doesn't set session state for the value. Users have to submit the form again to pass this new rate to other calculations on the forms.
    Is there another piece of code I need to add to force value to session state? The javascript is called via the page load and it will produce the correct rate when ever values are changed to warrant a new interest rate to be calculated.
    Here is the entire javascript:
    function loanrate() { 
    function getVal(item){
    if($x(item).value != "")
    return parseFloat($x(item).value);
    else
    return 0 ;
    //Allow rates of 0 to 100%, solve to the nearest 0.001%
    var a=0.00001;
    var b=1;
    var tol=0.00001;
    var test;
    var t;
    var y1;
    var y2;
    var P = getVal('P2_NEW_BAL_CALC');
    var A = getVal('P2_NEW_PI_TARGET');
    var N = getVal('P2_REMAINING_TERM');
    var nRate;
    var cRate;
    var root;
    var TEMP = a;
    // Allow only 100 iterations (more than enough for convergence)
    for(var k = 1; k<=100; k++) {
    // A*(Math.pow((1+i),N)-1)/(i*Math.pow((1+i),N)) = present worth of N payments of A (beginning
    // 1 period from now)
    // Finally, subtract P (the present worth, or the price).
    i = a;
    y1 = A *(Math.pow((1+i),N)-1)/(i*Math.pow((1+i),N))- P;
    i = b;
    y2 = A *(Math.pow((1+i),N)-1)/(i*Math.pow((1+i),N))- P;
    test = y1*y2;
    // If test>0, the function that is to be driven to zero has the same sign
    // for both sides of the interval.
    if (test>0) {
    b = a;
    a = TEMP;
    a = (a+b)/2;
    } else {
    // If test <0, the root of the equation is between a and b.
    // If the interval is small enough, return (a+b)/2 as the root.
    // If not, bisect the interval: save a as TEMP, move a (new) halfway toward b.
    t = (b-a)/2;
    if (t<tol) {
    root = (a+b)/2;
    // Compute the annual compounded rate, if payments are monthly
    //var annual = 100*(Math.pow((1+root),12)-1);
    root = root * 100;
    nRate = Math.round(1000 * root)/1000 ;
    cRate = (Math.ceil((nRate * 12)/.125)*.125);
    document.getElementById('P2_NOTE_RATE_TO_PITIA_31').value = cRate.toFixed(3);
    //$x_Value('P4_ANNUAL_RATE',Math.round(1000*annual)/1000);
    break;
    } else {
    TEMP = a;
    a = (a+b)/2;
    }

    I believe the following will do what you need.
    document.getElementById('P2_NOTE_RATE_TO_PITIA_31').value = cRate.toFixed(3);
    var get = new htmldb_Get(null,&APP_ID.,'APPLICATION_PROCESS=dummy',0);
    get.add('P2_NOTE_RATE_TO_PITIA_31',$x('P2_NOTE_RATE_TO_PITIA_31').value)
    gReturn = get.get();
    ...

  • SET PASSWORD FROM SESSION STATE

    Hi, I need to set the password from session state but I can not do this when Display As option is set to PASSWORD. In case of Text Field works ok.
    How to accomplish this?

    Acctually I need to implement the functionality of email confirmation, but I thought a simple way is to login by clicking on a link sent by email.
    Anyhow in a password field I can not set the value, even I use a hidden item.

  • Trouble setting the session state of a select item.

    Hi,
    I have a requirement whereby I need to change the session state of a select list item in my form without the need to submit. I am using Application Express 4.1.0.00.32. I thought this would be straight forward using a dynamic action or javascript and calling an on demand process for example.
    P1_MY_SELECT onchange="set_option();"
    function set_option() {
    var l_option=$f_SelectValue('P1_MY_SELECT');
    alert( 'My new value is ' + l_option );
    // ON DEMAND Set the new session state value
    var lRequest = new apex.ajax.ondemand
    ('SET_P1_MY_SELECT',function()
    {  /* start the return function */
    var l_s = p.readyState;
    if(l_s == 1||l_s == 2||l_s == 3)
    else if(l_s == 4)
    { gReturn = p.responseText;
         (gReturn)?json_SetItems(gReturn):null;
    else{return false;}
    /* end the return function */
    lRequest.ajax.addParam('x01', l_option );
    lRequest._get()
    My on demand application process
    DECLARE
    l_options varchar2(2000) := wwv_flow.g_x01;
    BEGIN
    APEX_UTIL.SET_SESSION_STATE('P1_MY_SELECT',l_options);
    apex_util.json_from_items('P1_MY_SELECT');
    END;
    Is there a better method to set the session state of my P1_MY_SELECT other than what I am doing as above or can you tell me why the session state of P1_MY_SELECT is not changed?
    Thanks.
    Edited by: 968358 on 01-Nov-2012 08:40

    if you are on 4.1 why don't you use a dynamic action instead of writing the code again?
    create a dynamic action like this
    Event: Change
    Source Type: Item
    Item: P1_MY_SELECT
    True Action:
    =========
    Action: Execute Plsql Code
    Plsql Code: null;
    Page Items to Submit: P1_MY_SELECT
    Page Items to Return: P1_MY_SELECT (this is optional)
    http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21674/advnc_dynamic_actions.htm#HTMDB27020

  • Row fetching, session state, multi-page processing of 1 row - problems

    I'm building an application that's updating a couple of tables via an updateable view and an instead-of trigger. That portion of it works OK, EXCEPT for the problems that I'm having with the APEX end.
    I've got 3 pages; the first page reads the row in via the automated row fetch and has, say columns 1-20.
    Page 2 has, say, columns 20-40 and page 3 has the remainder.
    I have the row fetch set up conditionally so that it only executes the first time that page 1 is displayed. All the columns are set as Database Columns.
    It seems that if I fill in fields on page 1, move to page 2, and back to page 1, the contents of the fields on page 1 are destroyed unless I set their 'Source used' to 'Only when the current value in session state is null'.
    Furthermore, upon update (which is on page 3, via an automated row update), the only columns that get updated are those that exist on page 3. The column values from the other pages no longer exist.
    Does navigation to another page not retain the session-state of database-column items?
    Am I better off just writing my own processes to perform the updates?
    Any other suggestions?
    Frank

    Hello Frank,
    >>I have the row fetch set up conditionally so
    that it only executes the first time that page 1 is
    displayed …
    It seems that if I fill in fields on page 1, moveto page 2, and back to page 1, the contents of the
    fields on page 1 are destroyed unless I set their
    'Source used' to 'Only when the current value in
    session state is null'.
    It seems that the first sentence is not consistent
    with the second one. The only reason the values are
    destroyed, as you call it, is that the ARF is running
    again. What condition are you using on your ARF?
    In any case, the right way to deal with it is to
    change the source used to "Only …", as I understand
    you already did.
    Hi Arie,
    I set an item after the first ARF. I then have the ARF set to execute conditionally based on the presence of that item. (I also display a success message on the ARF, so I know that the ARF is only occurring once). I move to subsequent pages by submitting the current pages.
    >>Does navigation to another page not retain the
    session-state of database-column items?
    Navigating to another page does retain the session state values.
    It's depends on what you mean by navigating.
    Submitting the page set/update session state.
    Redirect without submitting the page will not
    set/update the session state.
    >>Furthermore, upon update (which is on page 3,
    via an automated row update), the only columns that
    get updated are those that exist on page 3. The
    column values from the other pages no longer
    exist.
    Automatic DML is working only with the current page
    items. You can't use it to insert/update other page
    items, even if they are in session state. However, in
    your case, it's not the Automatic DML performing the
    actual updates, but your triggers. Are your triggers
    relying on session state values?
    I think this statement 'Automatic DML is working only with the current page
    items.' answers my question. My trigger is working on session state values. It's an 'instead-of' trigger, so I was letting the automatic DML perform the 'update' on the view, while allowing the trigger to do the actual update of several tables that the view joins by referring to their :NEW. values in the trigger. Since the DML occurs on my last page, those were the only session state values that my trigger ultimately saw.
    >>Am I better off just writing my own processes to
    perform the updates?
    I believe the correct way is to submit the page and
    then branch to the next one. Submitting the page will
    save all your items in session state, and allow these
    items to be available for page 3 DML.
    Regards,
    Arie.I'm doing that already - all the values do appear to be in session sate, except only the items that are on the last page actually make it to the automatic DML update, which seems to agree with your previous statement.
    I suppose I could write my own process to perform the update, as the values are available in session state.
    Thanks,
    Frank

  • Radio button state on region load...

    Is there a way to set the radio button state (click event) on a region load? The default value of 0 (read-only) works when clicked, but doesn't when the page initially loads, and it's like the button click event needs to take place at the region load time. The values are 1 and 0 set statically if that matters, and the hidden value does not get changed when the radio button with the value of 1 is selected.
    The button makes the button visible when 'edit' is selected and the button disappears when 'read-only' is selected which is the expected behavior.
    I do have a condition on the 'save' button for the value to not be zero which is based on the value from the radio button.
    My gut says it'll be a region header attribute or Java Script sort of thing and I've not found anything so far, and I'm hoping there's an Apex guru out there that has a recommendation.
    Thanks in advance!
    Matt

    I used some source I found on Denes' web site and added the call, but it didn't yield the result I was hoping for.
    <script type="text/javascript" language="javascript">
    $s('P8_RADIO_BUTTON','0');
    function f_showhideButtonRadio(pThis, pValue)
    {     var show_or_hide = html_RadioValue(pValue);
    if (show_or_hide == 0)
    {html_HideElement(pThis);}
    else
    {html_ShowElement(pThis);}
    function f_showhideButtonSelect(pThis, pValue)
    {     var show_or_hide = $x(pValue).value;
    if (show_or_hide == 0)
    {html_HideElement(pThis);}
    else
    {html_ShowElement(pThis);}
    </script>
    I'm quite new to the Java Script in Apex, so if I hosed this up, please let me know. Also, does that set the click event on or does that just set the value? The reason I ask is with a 0 or 1 it yielded the same result.
    Thanks!
    Matt

  • Session state consistency - how does APEX keep session state across pages

    I would like to know how the APEX develper tool keeps session state from being overwritten across mutiltple pages in the same Session. Because this is difficult to explain I'll use an example from withing the APEX dev tool
    For Example:
    1. I navigate to the page (4150) thet allows me to edit my Page 880 [Window 1]
    2. I now do a Cntrl^N to Open a New Window in the same session (this opens on the same Page 880 in the new window) [Window 2].
    3. In Window 1, I click an item to update ie I want to put a comment on the Unconditional Branch so click this to go to the Update page. I see the F4000_P4313_ID is passed in the URL (ie the context, UID of the Branch).
    4. In Window 2, I change the page to 881 - ie this is overwriting my Session State variables for page 880 with page 881.
    5. I click an item in Page 881 to update ie I want to put a comment on the Unconditional Branch so click this to go to the Update page. I see the F4000_P4313_ID is passed in the URL (ie the context, teh UID of the Branch).
    6. In Window 1 (the Page 880), I add a comment to the Branch and 'Apply' changes. On returning to the Page the context has changed from 880 to 881 (as expected as Window 2 had overwritten the session state). Slightly confusing for the user as they did go from Page 880 not 881 but ok
    What intrigues me is how the Edit Branch page applied the update to the correct branch [good !]. Why weren't the Branch Session state variables (ie the Branch for Page 880) overwritten with the Branch Session state variables for the Branch from Page 881 ?
    Both navigations go to the same Page passing the UID of the branch, hence I would of thought the last navigation is the one that would be persisting (ie from Page 881 Window) ?
    Any tips on preventing users updating the wrong record because of the Session State being overwritten would be most welcome.
    Look forward to hearing from you.

    Let me take a shot at explaining this.
    Session state is stored in Oracle database tables. When a APEX page is rendered, those tables are read and the HTML is sent to the browser. When that page is submitted, all the HTML form inputs on the page are saved back into session state over-writing any existing values for that session
    So, in your example, since Page 4313 has the hidden page item (the "GUID" of the branch), it doesn't matter if any other window has the same page open with some other GUID. Each page is a self-contained "unit" which has all the information necessary to properly process that page when it is submitted.
    Think of it this way...in your example, when you have windows 1 and 2 open (window 2 was opened after window 1), go back to Window 1 and click the browser's Reload/Refresh button. Instead of refreshing the same page (branch 9000000), you will find that it will load branch 8000000! This is because session state is read from the database and when Window 2 was rendered, it has set F4000_P4313_ID in session state to 8000000.
    Hope this helps.

  • Session State Protectio Violoation in Apex 4.2 Page Items

    I'm testing my Apps that I upgraded from 3.2 to 4.2 and getting the message below and haven't been able to understand why.
    Error Session state protection violation: This may be caused by manual alteration of protected page item P2_PAY_NO. If you are unsure what caused this error, please contact the application administrator for assistance
    How the Page works.
    1. Before Region Process runs that pre-populates some of my Text Items.
    2. The user then has the ablibity to select from a select list item that will re-populate the items populated during the Before reqion based on the date selected.
    I do this by calling the code below with an "onchange="javascript:date_populate(this);" on the HTML Form Elements Attributes.
    {var myString = $x(pThis).value;
    var mySplitResult = myString.split("|");
    $x('P2_START_DATE').value = mySplitResult[0];
    $x('P2_PAY_YEAR').value = mySplitResult[1];
    $x('P2_PAY_NO').value = mySplitResult[2];
    $x('P2_PICT_CODE').value = mySplitResult[3];
    $x('P2_END_DATE').value = mySplitResult[4];}
    3. When I submit the page I get the Session State Violation.
    All Items have "Session State Proection" set to "Unrestricted"
    Session State Protection is "Disabled" for the application.
    Edited by: spuchc on Apr 12, 2013 2:07 PM

    Check you are not updating items of type "Display Only".
    Denes Kubicek
    http://deneskubicek.blogspot.com/
    http://www.apress.com/9781430235125
    http://apex.oracle.com/pls/apex/f?p=31517:1
    http://www.amazon.de/Oracle-APEX-XE-Praxis/dp/3826655494
    -------------------------------------------------------------------

  • SSP broke my LOV :-(  - Session State Protection Issue

    Hi Folks.
    I'm tinkering with SSP on my application.
    Here's the challenge du jour.
    If I enable SSP across the entire application I can't even log in. That was resolved by setting the login page to 'Unrestricted'. not sure of the security implication of doing that but bear with me.
    My main Issue is this.
    I am using Patrick's APEXLIB for Cascading LOV functionality.
    My Parent LOV works fine.
    My Child LOV is blank.
    I have modified everything on the page to 'Unrestricted' and still I end up with a blank child LOV.
    Any ideas how to skin this cat?
    Many thanks
    Simon

    OK so here's how i 'fixed' this issue. I say fixed but I would welcome any comments regarding the security impact of the 'fix' I came up with.
    First of all I enabled SSP across the entire application
    Page Access Protection = Arguments Must have Checksum
    Application Item Protection = Checksum required - Session level
    Page Data Entry Item Protection = Checksum required - Session level
    Page Display-Only Item Protection = Checksum required - Session level
    This had the desired effect of applying these settings to everything.
    Having done that I needed to update the SSP to Patrick Wolf's Application Items in the following way...
    APEXLIB_REFERENCE_ID = Unrestricted
    APEXLIB_REFERENCE_TYPE = Unrestricted
    As a side note, I noticed that the Application Item FSP_AFTER_LOGIN_URL was also set to Unrestricted. I guess this is enforced by APEX to allow successful login to the application. All other application items were set to Checksum Required - Session Level as per the cross-application configuration I had initially done.
    Finally I had to review the pages that had the cascading LOVs that no longer functioned. For these pages I had to set the "Item Session State Protection" to Unrestricted for the poll down LOVs used in the Cascading LOV process. Parent LOVs and Child LOVs.
    The end result is that I have pretty tight SSP enabled across the entire application. The only areas where it is 'Unrestricted' are some of the cascading LOVs.
    I would be very interested to hear from anyone who would care to comment on the security weaknesses this approach may have created.
    I will update this thread if the SSP enabling has affected anything else in the application. So far though, it's only the Cascading LOVs.
    Kind regards
    Simon Gadd

  • Set checkbox session state using Jquery / dynamic action

    Hello Folks,
    I'm trying a simple dynamic action to disable & set element value upon making a radio box selection.
    What I'd like is:
    a) if i chose "Vendor" as "Traditional" (default value) I would like to set the "SNAP" flag as Checked and "Status" textbox to "test for static value" (SNAP flag is not set, only works on Page load)
    b) if i chose "vendor" as "Isilon" then "SNAP" flag should be greyed out (disabled) and "Status" textbox should be disabled. (Working as Expected)
    Link to the page:
    http://apex.oracle.com/pls/apex/f?p=73069:6:0::NO:::
    Workspace: wksp_chandu
    Username: test
    Password:test
    Dynamic Action
    Identification
    Page:
    6. Check Disable radio
    *Name(Value Required)
    *Sequence(Value Required)
    When
    *Event(Value Required)
    - Select Event -
    Change
    Click
    Double Click
    Get Focus
    Key Down
    Key Press
    Key Release
    Lose Focus
    Mouse Button Press
    Mouse Button Release
    Mouse Enter
    Mouse Leave
    Mouse Move  Page Load
    Page Unload
    Resize
    Resource Load
    Scroll   Select          
    After Refresh
    Before Page Submit
    Before Refresh
    Change Order [Shuttle]
    Custom
    Show unsupported...
    *Selection Type(Value Required)
    - Select Selection Type -
    Item(s)
    Button
    Region
    DOM Object
    jQuery Selector
    *Item(s)(Value Required)
    Condition
    - No Condition -
    equal to
    not equal to
    greater than
    greater than or equal to
    less than
    less than or equal to
    is null
    is not null
    in list
    not in list
    JavaScript expression
    *Value(Value Required)
    True Actions
    The following actions will be fired when the 'When' condition is met, or when it is 'No Condition'.
    Edit
    Sequence
    Action
    Fire On Page Load
    Selection Type
    Affected Elements
    10
    Clear
    Yes
    Item(s)
    P6_SNAP
    P6_STATUS
    20
    Disable
    Yes
    Item(s)
    P6_SNAP
    P6_STATUS
    Add True Action
    False Actions
    The following actions will be fired when the 'When' condition is not met.
    Edit
    Sequence
    Action
    Fire On Page Load
    Selection Type
    Affected Elements
    10
    Enable
    Yes
    Item(s)
    P6_SNAP
    P6_STATUS
    30
    Set Value
    Yes
    Item(s)
    P6_STATUS
    40
    Execute JavaScript Code
    No
    Item(s)
    P6_SNAP
    Add False Action
    Thanks!
    Chandu

    Oops...I just got it working.. Thanks for your time. I was trying to set checkbox value via javascript code and somehow that wasn't working...Finally changed the setvalue to be based on "PL SQL expression" nvl(:P6_SNAP,1)...that seem to have worked.
    Thanks again !

  • Session State is set to null when tab (from List) is clicked

    Hi Gurus, et al,
    Database: 10g Rel 2
    APEX: 4.1.2
    My application uses a tabbed navigation list to tab through different sections of the form. Each tab issues a doSubmit('tabname');. My application also uses Page 0 for regions that are common to several forms. When I tab through the form (called requisition), the session state for the page items is set to null while the page 0 remains intact. It seems like the doSubmit sets the page items to null. How can I prevent this from happening?
    Also, it still happens on APEX 4.2.1 because I put the application on APEX.ORACLE.COM:
    Workspace: RGWORK
    Application: CSRSR (Application 60220)
    Page: 8
    Username: tester
    Password: test123
    Please follow these steps for this issue to occur
    1. Run application 60220
    2. Select the only choice on the menu (Creative Services Design Requisition (PA 0879))
    3. List of Outstanding Requisitions is displayed
    4. Click the edit icon next to the requisition Project Description is 'zazaza'
    5. Change Date Needed to 3/31/2013
    6. Click on the Project Type tab
    7. All items are null for that tab (project type in the database = 'frame:dec')
    Robert
    http://apexjscss.blogspot.com

    Denes,
    While I appreciate your professional opinion, the issue still remains. I may not have the described the issue clearly. It seems that while the row is initially fetched (source type is only when null), project type and purpose items are not displayed initially with the infomation from the table when the appropriate tab is clicked. For example, while the row contains 'frame:dec' for project type, those checkboxes are checked on on the screen.
    The form is "complex" for the following reasons:
    1. Uses a wizard for new requisitions
    2. Uses tabs for updates
    3. Uses a Modal page to display outstanding requisitions for the user before the form is displayed
    4. Uses common regions (on page 0) with other pages (3 pages uses project information, delivery, requesting department, and chargecode regions.
    5. Authorized approvers popup list are populated
    6. Manual tabular form is used for framing information including collections
    I tried to uses application processes, application computations, package procedures and functions whenever possible.
    SOMEONE, PLEASE HELP!
    Robert
    http://apexjscss.blogspot.com

  • Use session state values to set column value during insert/update

    I am building an APEX 4.2 application that uses the canned Data Loading control to upload csv data to a table.  I have modified the 'Select Data Source' page of the workflow and it now contains three LOV's that the user selects values from.  The selected values are stored in Session State.  As I'm new to APEX, I do not know how to reference Session State objects in the context of the Data Loading workflow so that the appropriate columns are set with the correct values.  My assumption is that the columns that are apart of the insert statement reside in a collection somewhere.  I just don't know how to loop through the collection, determine the correct column, and then set that column's value equal to the corresponding LOV value in Session State.

    Scott,
    This is in version 2.2.1 and there are no caching features available.
    The application does require login.
    I'm playing around with the APP_UNIQUE_PAGE_ID right now but I am finding that even in the builder if I edit the attributes of a report column and then try to edit another column it will bring up the last column I edited. Even if I use the record navigation buttons next to the Apply Changes button it will keep bringing me the same page over and over unless I constantly refresh the pages.
    Greg

  • Set Session State with Shuttle items

    Is it possible to have session state set with each item selected in a shuttle? You have a shuttle with 4 possible options, you select item 2 from the left portion of shuttle and it is moved to the right.. Can you set the session state at that point?
    What I am trying to do is take the session state after change in the control and use it to populate a text field below. The returned values are used in a sql select to populate the text box with a looked up value...
    Thank you,
    Tony Miller
    Ruckersville, VA

    TexasApexDeveloper wrote:
    Won't this just push the last items value in, as apposed to appending the value?
    Tony,
    No. Because for shuttle items the return value is stored as colon delimited string.
    Means after each change you will have a colon delimited string in the session state with selected values(moved to right).
    See this http://apex.oracle.com/pls/apex/f?p=46417:47

  • NEWBIE: Submit Page to set session state

    I have a form that displays various items to include Popup LOVs (dynamic; based on session variables). If the user displays a page, the session state is not yet set so the Popup LOVs don't function correctly (until the user presses the Apply Changes button to submit the page). Can I automatically submit the page or set session state for those items used in the LOVs on page load? Note that I'm not too familiar with the use of javascript. I'm using Application Express version 2.0

    Yes, I discovered that! Thanks for responding, though. I basically run a process (PL/SQL) under page rendering section that looks like:
    begin
    htmldb_util.set_session_state('P10_MACHINE_TYPE','&P10_MACHINE_TYPE.');
    end;
    Thanks!

  • Setting session state post-authentication

    Hi all,
    This application uses DATABASE ACCOUNT authentication, and has a post-authentication process that sets a few application items using code such as
    apex_util.set_session_state('F_MY_ITEM', v_my_value);These items are used to secure certain tab options within the application.
    The post-authentication PL/SQL works fine, I can't see anything wrong the the logic. I've debugged it and I know the values are being set. I'm checking the value of session state straight after using v('F_MY_ITEM'), along with checking my session ID matches up - everything seems ok there.
    The issue is that when I log in, the session state is not set for those items - even though the post-auth process is called with no errors raised. Apex debug states
    ... Session State: Save "MY_ITEM" - saving same value "Y"If I log out, then log in (without closing browser tab), the values are now set as expected (visual confirmation using conditionally displayed tabs, and of course checking session state from developer toolbar)
    Notably, Debug states something slightly different
    ... Session State: Save item "MY_ITEM" newValue="Y" escape_on_input="Y"There are a few other differences with the debug output, this this seems the most pertinent.
    The only difference I've been able to track down is if I'm logged into the application builder in the same browser.
    If I attempt to log in with a freshly opened browser, navigate directly to application URL, the behaviour works as expected. Tabs appear as if items are set.
    Could the fact I'm authenticated in the application builder be messing with session state behaviour?
    This is with Apex 4.0.2.00.07; agnostic to browser (IE/FF/Chrome); 11gr2
    Cheers,
    Scott

    I did consider this because I experienced the same thing with page processes.
    However, in this case my post-auth function is within a package and I don't use bind variables.
    I was essentially doing this in my package:
    apex_util.set_session_state('F_MY_ITEM', 'Y');
    my_log_proc(v('F_MY_ITEM'));And seeing Y in the debug log, yet once on my home page, viewing session state I see F_MY_ITEM as empty - unless in the scenario I described.
    It's not a showstopper since the users won't be logged in to the application builder, but it would be nice to know the cause.

Maybe you are looking for