ADF UIX Forward on Successful Update

I am working through the tutorial at:
http://otn.oracle.com/obe/obe9051jdev/uixTutorial/lesson_UIX.htm
I have complete the tutorial, and the way it works now there is a browse page which lists rows from the database. You can select a row and press modify, or click on new to create a new one. Both buttons take you to a modify page.
The modify page posts back to itself. After I insert / update a record I am taken back to the modify page. Is there some way to have it forward the user back to the browse page if the insert / modification as successful and only go back to the modify page if there was a validation error?
Nick

you should create and event for your "Submit" button
placed on create/modify page, the event refers to
DataAction which must return you to browse page. Read
the tutorial more careful.Hi, I went back through the tutorial and I don't see anything I missed. I'm new to ADF / UIX / Struts and am not sure how to even handle this or where to look.
I want the modify form (formEmp.uix) to redisplay the form input if there was an error inserting into the database (which it does do now), and forward the user back to the browse page (browseDeptEmp.uix) if the insert / update was successful.
If I did miss something in the tutorial please point me to the right section but looking back through I didn't spot anything.
Thanks for your help,
Nick

Similar Messages

  • ADF UIX with ADF Binding without Struts

    After trying the CRUD tutorial from the "Complete ADF UIX Application (Browse, Create, Update, Delete)" -(http://otn.oracle.com/products/jdev/collateral/tutorials/9050/adfuix_tut.html), I found it may be thousands of struts actions in my upcoming project.
    It will be difficult to merge and sync my team members works and the usefulness of StrutsPageFlow diagram will decrease severely although it is very convenient to drag data control operations to struts data actions without coding.
    I am trying to use ADF Controller event handler as my page flow engine to eliminate these drawbacks.
    When I use ADF controller as my page flow engine, if I have to pass ui model reference, initialize binding container, get binding container, get application module and refresh binding container, ... manually in my event handler codes just like the BasicDataAction class does in "ADF data binding primer (http://www.geocities.com/smuench/adfprimer/)"?
    Is there any document that cover this information or any suggestions?
    Daniel

    ADF Controller questions should be posted in the JDeveloper forum.

  • Is there new "Complete ADF UIX Application" for 10G Production?

    Is there a new version the tutorial "Complete ADF UIX Application (Browse, Create, Update, Delete)".
    The one I found
    http://otn.oracle.com/products/jdev/collateral/tutorials/9050/adfuix_tut.html
    is for 10G preview.
    Or is this version still current enough for production?
    Thanks, Steve

    Hi Steve -
    As far as I can tell, this is the new (production) version of the UIX tutorial:
    http://otn.oracle.com/obe/obe9051jdev/uixTutorial/lesson_UIX.htm
    Andy

  • ADF UIX Partial page rendering

    Hi
    I am facing a mysterious problem with partial page rendering in ADF UIX.
    My page contains a <header> H1 and inside this there are two headers(H2 and H3).
    The partial page rendering is in the header H2 and is working fine.
    When i remove the below header H3 the partial page rendering ceases to work and get stuck.
    Pasting the full code below. Please suggest.
    <?xml version="1.0" encoding="windows-1252"?>
    <!-- $Header: registration.uix 115.4.51.4 2009/12/14 13:10:05 kcthirum noship $ -->
    <page xmlns="http://xmlns.oracle.com/uix/controller"
    xmlns:ui="http://xmlns.oracle.com/uix/ui"
    xmlns:ctrl="http://xmlns.oracle.com/uix/controller"
    xmlns:html="http://www.w3.org/TR/REC-html40"
    xmlns:myTemplate="http://xmlns.oracle.com/xhub"
    xmlns:bc4j="http://xmlns.oracle.com/uix/bc4j"
    xmlns:data="http://xmlns.oracle.com/cabo/marlin" expressionLanguage="el">
    <!--This UIX page is used as a tutorial page for new developers, which is why it has a lot of comments-->
    <!--This section describes the ApplicationModule used by this page, and any View Objects that are used to display UI components or are used in any of the event handlers-->
    <bc4j:registryDef>
    <!-- XhubRegAM is the application module used by the entire Registration flow. defFullName is just the class. configName is the Configuration, which always has the pattern <AM name>Local -->
    <bc4j:rootAppModuleDef name="XhubRegAM"
    defFullName="oracle.apps.snw.tpadmin.server.XhubRegAM"
    configName="XhubRegAMLocal" releaseMode="stateful">
    <bc4j:viewObjectDef name="TpProfilesRegVO" rangeSize="1" autoCreate="false"/>
    <bc4j:viewObjectDef name="UsersRegVO" rangeSize="1" autoCreate="false"/>
    <!--IdentifierDomainsView drives the dropdown list of Identifier Types-->
    <bc4j:viewObjectDef name="IdentifierDomainsView" rangeSize="20"/>
    <!--XhubTerritoriesTlView drives the dropdown list of Countries-->
    <bc4j:viewObjectDef name="XhubTerritoriesTlView" rangeSize="300"/>
    </bc4j:rootAppModuleDef>
    </bc4j:registryDef>
    <!--We import the template file xhub.uit, which has code to display the tabs, subtabs, global buttons, etc., appropriately-->
    <templates xmlns="http://xmlns.oracle.com/uix/ui">
    <templateImport source="xhubtpadmin.uit"/>
    </templates>
    <content>
    <!--in this section we define all of the methods and ResourceBundle classes that we want to reference as data sources in our page-->
    <dataScope xmlns="http://xmlns.oracle.com/uix/ui"
    xmlns:data="http://xmlns.oracle.com/uix/ui">
    <provider>
    <!--We use the TextProvider class to display ANY text to the user. All text is controlled in the database and cached on the middle tier. This allows for translation and for customization of text-->
    <data name="textSource">
    <bundle class="oracle.apps.snw.uicommon.TextProvider"/>
    </data>
    <!--This method provides information about the hub-->
    <data name="adminInfo">
    <method class="oracle.apps.snw.tpadmin.webui.AdminInfo"
    method="getAdminInfo"/>
    </data>
    </provider>
    <contents>
    <document>
    <!--This section defines the html metadata, usually just the page title-->
    <metaContainer>
    <head title="${textSource.REGISTRATION}"/>
    </metaContainer>
    <contents>
    <body>
    <contents>
    <!--This next tag indicates that everything inside of it should be encapsulated in the "rootChild" node of the template page-->
    <myTemplate:xhubTpAdminPageLayout selectedTab="1">
    <contents>
    <!-- this will contain any validation errors after form submission -->
    <messageBox automatic="true"/>
    <!--The form tag is necessary for any kind of form handling. This particular form performs some javascript validation before submitting-->
    <form name="reg" method="POST">
    <contents>
    <!--The javascript that is executed on form submission-->
    <!-- we cannot implicitly determine that events will be triggered because submit buttons are outside the form scope, so add the placeholder explicitly -->
    <formParameter name="event"/>
    <!-- define the bc4j scope of all child elements-->
    <bc4j:rootAppModuleScope name="XhubRegAM">
    <contents>
    <!-- a top-level header -->
    <header text="${textSource.REGISTRATION}">
    <contents>
    <!-- always used OraInstructionText, not <tip>, for explanation messages-->
    <styledText styleClass="OraInstructionText"
    text="${textSource.REG_PAGE_EXPLAIN}"/>
    <!-- a second-level header -->
    <header text="${textSource.REG_COMPANY_INFO}">
    <contents>
    <stackLayout>
    <contents>
    <!-- the labeledFieldLayout is the correct layout for vertically-stacked labeled fields-->
    <labeledFieldLayout id="TpPartialDetails" width="80%"
    labelWidth="40%">
    <contents>
    <messageChoice name="OracleAppsCustFlag"
    prompt="Oracle Apps Customer"
    required="yes" statePreserved="true"
    selectedValue="${ui:defaulting(uix.pageProp.OracleAppsCustFlag, 'select')}">
    <primaryClientAction>
    <firePartialAction event="buyorsup"
    targets="TpPartialDetails"
    formSubmitted="true"
    unvalidated="true"/>
    </primaryClientAction>
    <contents>
    <option text="-select-" value=""/>
    <option text="${textSource.YES}" value="Y"/>
    <option text="${textSource.NO}" value="N"/>
    </contents>
    </messageChoice>
    <messageTextInput prompt="${textSource.ORACLE_CSI_Q}"
    name="OracleCsi"
    text="${uix.pageProp.OracleCsi}"
    rendered="${ui:defaulting(uix.pageProp.OracleCsiRender, 'false')}"/>
    <messageTextInput prompt="${textSource.YOUR_TP_NAME}"
    name="TpName"
    tip="${textSource.YOUR_TP_NAME_TIP}"
    required="no"
    text="${uix.pageProp.TpName}"
    rendered="${ui:defaulting(uix.pageProp.TradeswithTPRender, 'false')}"/>
    <messageTextInput prompt="${textSource.YOUR_TP_ALIAS}"
    name="TpAlias"
    tip="${textSource.YOUR_TP_ALIAS_TIP}"
    required="no"
    text="${uix.pageProp.TpAlias}"
    rendered="${ui:defaulting(uix.pageProp.TradeswithTPAliasRender, 'false')}"/>
    </contents>
    </labeledFieldLayout>
    </contents>
    </stackLayout>
    </contents>
    </header>
    <!--level-2 header-->
    <header text="${textSource.TP_DEFAULT_CONTACT_INFO}">
    <contents>
    <labeledFieldLayout width="80%" labelWidth="40%">
    <contents>
    <!--all of these fields default to the corresponding ctrl:page value if the user has entered a value. These values are set up in the register() handler-->
    <messageTextInput prompt="${textSource.PASSWORD_PROMPT}"
    name="Password" id="Password"
    required="yes" secret="true"
    maximumLength="32"
    text="${uix.pageProp.Password}"/>
    <messageTextInput prompt="${textSource.PASSWORD_CONFIRM_PROMPT}"
    name="PasswordConfirm"
    id="PasswordConfirm" required="yes"
    secret="true" maximumLength="32"
    text="${uix.pageProp.PasswordConfirm}"/>
    </contents>
    </labeledFieldLayout>
    </contents>
    </header>
    </contents>
    </header>
    </contents>
    </bc4j:rootAppModuleScope>
    <spacer height="10"/>
    <!--message indicating how we indicate required fields-->
    <inlineMessage required="yes"
    prompt="${textSource.REQUIRED_FIELD}"/>
    </contents>
    </form>
    </contents>
    <!--the contents of this tag will appear below the page-->
    </myTemplate:xhubTpAdminPageLayout>
    </contents>
    </body>
    </contents>
    </document>
    </contents>
    </dataScope>
    </content>
    <!--event handlers-->
    <handlers>
    <!--This event is called by pressing the submit button-->
    <event name="continue">
    <bc4j:findRootAppModule name="XhubRegAM">
    <method class="oracle.apps.snw.tpadmin.webui.RegistrationHandlers"
    method="register"/>
    </bc4j:findRootAppModule>
    </event>
    <!--This event is called by pressing the Cancel button-->
    <event name="cancel">
    <!-- finding the ApplicationModule causes it to be checked out from the ApplicationPool. It is released after rendering completes. -->
    <bc4j:findRootAppModule name="XhubRegAM">
    <!-- rollback the current transaction -->
    <bc4j:rollback/>
    <!-- forward to the summary page -->
    <go name="main"/>
    </bc4j:findRootAppModule>
    </event>
    <!--the * event is called whenever the page is accessed and no other event is called-->
    <event name="buyorsup">
    <bc4j:findRootAppModule name="XhubRegAM">
    <!--This method sets the context of the page, namely the scope of the country dropdown view object-->
    <method class="oracle.apps.snw.tpadmin.webui.RegistrationHandlers"
    method="isBuyerorSupplier"/>
    </bc4j:findRootAppModule>
    </event>
    <event name="*">
    <bc4j:findRootAppModule name="XhubRegAM">
    <!--This method sets the context of the page, namely the scope of the country dropdown view object-->
    <method class="oracle.apps.snw.tpadmin.webui.RegistrationHandlers"
    method="setContext"/>
    </bc4j:findRootAppModule>
    </event>
    </handlers>
    </page>
    Please suggest if you know of any documentation on ADF UIX partial page rendering.
    ADF UIX has very little documentation online and finding it hard to debug this issue.
    It ll be of great help.
    Thanks
    Kamal

    Hi Jason,
    As of EA9, all rendered components support a partialTriggers attribute. This attribute takes a list of master component IDs. If any of the master components are updated via a partial event, the dependent component will be rerendered in the partial update.
    If you are on an earlier release, you should upgrade.
    Thanks,
    Jeanne

  • ADF UIX doSelect override with PL/SQL fails to allow insert

    I've been trying to create an ADF-UIX web app for simple insert/update/delete of records to a table.
    The schema simply has 2 tables - master and detail where the detail pk is made up of the master id and a start date:
    CREATE TABLE master (
    id NUMBER NOT NULL,
    name VARCHAR2 (10) NOT NULL,
    CONSTRAINT pk_master
    PRIMARY KEY ( id ));
    CREATE TABLE detail (
    id NUMBER NOT NULL,
    start_date DATE NOT NULL,
    name VARCHAR2 (10) NOT NULL,
    description VARCHAR2 (100),
    CONSTRAINT pk_detail
    PRIMARY KEY ( id, start_date ));
    ALTER TABLE detail ADD CONSTRAINT d_m_fk FOREIGN KEY (id) REFERENCES master(id)
    This works fine when I create it in a similar manner to that described in the "Complete ADF UIX Application ..." tutorial doc.
    http://www.oracle.com/technology/products/jdev/collateral/tutorials/9050/adfuix_tut.html
    I then tried to override the ADF doSelect and doDML methods as outlined in ADF_BC_StoredProcedures.zip example app allowing me to use PL/SQL stored pkg for dml.
    http://www.oracle.com/technology/sample_code/products/jdev/10g/ADF_BC_StoredProcedures.zip
    On trying to insert a new row my web app now fails with a null pointer exception when I press the Submit button. The app calls doSelect->handleStoredProcSelect which fails to get the value of a column.
    void handleStoredProcSelect() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN test_api.do_select(?,?,?,?,?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    ## This line works, I'm guessing because the value is populated from the master record I've selected in the form ...
    st.setLong(1,getTestId().longValue());
    ##FAILS HERE st.setDate(2,getStartDate().dateValue());
    Update,delete still work ok. And if I run the test app (right click on AppModule and select Test) all works ok.
    I'm not sure why doSelect is called on an insert so I commented out:
    doSelect
    handleStoredProcSelect
    handleStoredProcLock
    compareOldAttrTo
    Web App now lets me insert as expected.
    So finally ....my question is:
    Whilst the app now works does commenting out the doSelect leave me open to problems I haven't thought off
    and if not if you did want to use it how can you allow inserts?
    Any thoughts or similar experiences appreciated ...
    Cheers
    Ian

    I've been trying to create an ADF-UIX web app for simple insert/update/delete of records to a table.
    The schema simply has 2 tables - master and detail where the detail pk is made up of the master id and a start date:
    CREATE TABLE master (
    id NUMBER NOT NULL,
    name VARCHAR2 (10) NOT NULL,
    CONSTRAINT pk_master
    PRIMARY KEY ( id ));
    CREATE TABLE detail (
    id NUMBER NOT NULL,
    start_date DATE NOT NULL,
    name VARCHAR2 (10) NOT NULL,
    description VARCHAR2 (100),
    CONSTRAINT pk_detail
    PRIMARY KEY ( id, start_date ));
    ALTER TABLE detail ADD CONSTRAINT d_m_fk FOREIGN KEY (id) REFERENCES master(id)
    This works fine when I create it in a similar manner to that described in the "Complete ADF UIX Application ..." tutorial doc.
    http://www.oracle.com/technology/products/jdev/collateral/tutorials/9050/adfuix_tut.html
    I then tried to override the ADF doSelect and doDML methods as outlined in ADF_BC_StoredProcedures.zip example app allowing me to use PL/SQL stored pkg for dml.
    http://www.oracle.com/technology/sample_code/products/jdev/10g/ADF_BC_StoredProcedures.zip
    On trying to insert a new row my web app now fails with a null pointer exception when I press the Submit button. The app calls doSelect->handleStoredProcSelect which fails to get the value of a column.
    void handleStoredProcSelect() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN test_api.do_select(?,?,?,?,?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    ## This line works, I'm guessing because the value is populated from the master record I've selected in the form ...
    st.setLong(1,getTestId().longValue());
    ##FAILS HERE st.setDate(2,getStartDate().dateValue());
    Update,delete still work ok. And if I run the test app (right click on AppModule and select Test) all works ok.
    I'm not sure why doSelect is called on an insert so I commented out:
    doSelect
    handleStoredProcSelect
    handleStoredProcLock
    compareOldAttrTo
    Web App now lets me insert as expected.
    So finally ....my question is:
    Whilst the app now works does commenting out the doSelect leave me open to problems I haven't thought off
    and if not if you did want to use it how can you allow inserts?
    Any thoughts or similar experiences appreciated ...
    Cheers
    Ian

  • File upload, download using ADF UIX and not JSP

    I have examples for the file upload, download using JSP
    But I want to use ADF UIX. Look and feel in this is impressing and I want to use this. Any one have example for this.
    Users will select a file from their desktop
    This will be stored into the database (Any document. Word, Excel)
    When they query the records then the UIX column need to give a hyperlink. Clicking on the link should prompt to download the file to the local system

    Sure, I use the Apache Commons File Upload package, so that is what I will discuss here ( [Commons File Upload|http://commons.apache.org/fileupload/] ).
    The Commons File Upload uses instances of ProgressListener to receive upload progress status. So first create a simple class that implements ProgressListener:
    public class ProgressListenerImpl implements ProgressListener {
        private int percent = 0;
        public int getPercentComplete() {
            return percent;
        public void update(long pBytesRead, long pContentLength, int pItems) {
            if (pContentLength > -1) { //content length is known;
                percent = (new Long((pBytesRead / pContentLength) * 100)).intValue();
    }So in your Servlet that handles file upload you will need to create an instance of this ProgressListenerImpl, register it as a listener and store it in the session:
    ServletFileUpload upload = new ServletFileUpload();
    ProgressListenerImpl listener = new ProgressListenerImpl();
    upload.setProgressListener(listener);
    request.getSession().setAttribute("ProgressListener", listener);
    ...Now create another servlet that will retrieve the ProgressListenerImpl, get the percent complete and write it back (how you actually write it back is up to you, could be text, an XML file, a JSON object, up to you):
    ProgressListenerImpl listener = (ProgressListenerImpl) request.getSession().getAttribute("ProgressListener");
    response.getWriter().println("" + listener.getPercentComplete());
    ...Then your XMLHttpRequest object will call this second servlet and read the string returned as the percent complete.
    HTH

  • ADF UIX cancel/rollback button?

    Hi
    We're having a fair amount of trouble implementing a "cancel" button in our ADF UIX application (JDev 10.1.2). Apologies to those who read this same post on the ODTUG mailing list..... I'm hunting for even a hint of an answer before I approach Oracle Support.
    To set the scene, we have a parent VO "Departments" with child VOs "Dispatch" and "Agency". Dispatch also has a FK to Agency.
    We have a UIX view-screen that displays in a master-detail relationship Departments and Dispatch. From this screen the user can select the edit button, which navigates to an input-form screen to edit the currently selected Dispatch record.
    The Dispatch record has effective_from and effective_to dates. The underlying EO has a MethodValidator that ensures the from date <= the to date.
    On the edit screen we currently provide 2 buttons, Ok and Cancel. The Ok submitButton is bound to the commit binding, and navigates back to the view page via a struts link on completion.
    If the user selects the ok button and MethodValidator returns an error, the edit page's MessageBox displays the error and the user remains at the edit page until they resolve the issue.
    Our problems start with the cancel button.
    Originally we implemented the Cancel button as a simply "button" that navigated back to the view page. This worked well as the changes are never submitted, and on returning to the view page the record is presented in it's original state before being edited, thus the user's changes have been "cancelled".
    However if the user was editing an existing record, entered invalid dates that violated the MethodValidator, clicked ok and saw the MethodValidator error, then clicked cancel, on returning to the view page, any changes to the underlying record are visible including the invalid dates. I believe this occurs because the record has been submitted to the mid-tier by the ok button, and as such the changes now lies in the mid-tier.
    Given that a cancel "button" which simply navigates back to the view page is not a viable solution, we decided to investigate using a rollback button on our edit page, which then navigated back to the view page.
    There is a nasty side affect in using the rollback functionality, and has been a continuous frustration mentioned on OTN. When rollback is issued, it appears all iterators in the running application have their current row reset to the first element.
    This is a pain as in our example this results in not only the Dispatch iterator being reset to the first element, but also the parent Departments iterator, and presumably all other iterators in the application too. This would be an extreme annoyance to the user in every time they selected cancel, they would then need to navigate back to the correct Departments and Dispatch record if they wanted to make a different change.
    As such it is necessary to write some code to store the iterator positions before issuing the rollback, rolling-back, then restoring the iterator positions from the saved states.
    Luckily we found some code on OTN to do this:
    ADF - cancel button not working in input form(add new row)?
    This mechanism appeared to work, but, then, we did find one problem.
    I described at the beginning that our Dispatch VO is not only related to Departments but also Agency. To cater for this in our edit screen by including a LOV bound <messageList>, which displayed the relating Agencies for the user to select from.
    In using the pinched OTN rollback code, in the same scenario as previously, when the user edits a record, invalidates the MethodValidator after clicking ok, then clicks cancel, on returning to the view page, the field in Dispatch that represents the Agency is incorrectly showing a numeric result such as 0, 1, 2 etc. We realised that the value being shown is the previous edit screen's <messageList> internal index number representing the value selected in the list, and not the actual value itself.
    We're note sure why the OTN rollback code is causing this to occur. Though it restores the Agency iterator's position, it shouldn't result in the <messageList> index being written to the underlying Dispatch agency field, but rather the value the <messageList> index represents.
    It appears to me we're caught between a "rock and a hard-place" here. The simple solution of using a cancel "button" doesn't work when errors are raised. The complex case of using a "rollback" button doesn't work due to the problem with the <messageLists>.
    My research on OTN shows the "cancel vs rollback" button is a common frustration. Can somebody help me in providing a satisfactory "cancel" button that I can use throughout my app please?
    Many thanks in advance.
    Chris Muir

    The stack:
    Class                     Method
    UsrEcvAmpdsViewRowImpl    setAgency
    UsrEcvAmpdsViewRowImpl    setAttrInvokeAccessor
    ViewRowImpl               setAttribute
    DCDataControl             setAttributeInRow
    DCJboDataControl          setAttributeInRow
    JUCtrlValueBinding        setAttributeInRow
    JUCtrlValueBinding        setInputValue
    JUCtrlValueBinding        setInputValue
    InitModelListener         _setInputValue
    InitModelListener         _doModelUpdate
    InitModelListener         eventStarted
    AbstractPageBroker        _fireUIXRequestEvent
    AbstractPageBroker        handleRequest
    BaseUIPageBroker          handleRequest
    PageBrokerHandler         handleRequest
    UIXServlet                doGet
    HttpServlet               service
    HttpServlet               service
    ResourceFilterChain       doFilter
    JAZNFilter                doFilter
    ServletRequestDispatcher  invoke
    ServletRequestDispatcher  forwardInternal
    ServletRequestDispatcher  forward
    RequestProcessor          doForward
    RequestProcessor          processForwardConfig
    RequestProcessor          process
    ActionServlet             process
    ActionServlet             doGet
    HttpServlet               service
    HttpServlet               service
    ResourceFilterChain       doFilter
    JAZNFilter                doFilter
    ServletRequestDispatcher  invoke
    ServletRequestDispatcher  forwardInternal
    ServletRequestDispatcher  forward
    RequestProcessor          doForward
    RequestProcessor          processForwardConfig
    RequestProcessor          process
    ActionServlet             process
    ActionServlet             doGet
    HttpServlet               service
    HttpServlet               service
    ResourceFilterChain       doFilter
    JAZNFilter                doFilter
    EvermindFilterChain       doFilter
    ADFBindingFilter          doFilter
    ServletRequestDispatcher  invoke
    ServletRequestDispatcher  forwardInternal
    HttpRequestHandler        processRequest
    HttpRequestHandler        run
    HttpRequestHandler        run
    ReleasableResourcePooledExecutor$MyWorker run
    Thread  runAt a wild guess, InitModelListener is causing the issue, because it's the first place where we can see a setInputValue occuring?
    To make this official I've raised a TAR (4613003.992) with Oracle Support with a cut down version of our app to work through the issue.

  • Oracle ADF UIX tutorial wont commit changes

    I'm following the tutorial "Developing Applications with Oracle ADF UIX"
    http://otn.oracle.com/obe/obe9051jdev/uixTutorial/lesson_UIX.htm
    The tutorial works apart from if I create/update or delete a record its not commited to the database.
    Where I'm I going wrong?
    Thanks for any help.

    create/update should be commited to database due to method "Commit" that you drop into commit data action, and delete won't be commited, you should additionaly create "Commit" button on your page or use another way to commit.

  • Making a delete commit automatically with ADF BC, Struts and ADF UIX

    I'm trying to create a delete action that commits to the database automatically using ADF Business Components, Struts and ADF UIX.
    I have a browse page from which the user can view all records in the table, and perform edit, create and delete actions on the data.
    When the user selects a record and clicks edit they are taken to a screen where they can amend the details of that record. Create works in a similar way, but the create action on the view object is invoked before taking the user to the edit page (this is done by linking the browse page to an ADF DataAction (bound to Create) on the Struts page flow diagram, and then linking the ADF DataAction to the edit page).
    When the user clicks submit on the edit page, the container follows a forward from the edit page to an ADF DataAction bound to the Commit method, and then from there a forward back to the browse page.
    This seems to work fine for edit and create, but when I try to do something similar for delete, it behaves unpredictably - sometimes the delete is committed to the database, sometimes not.
    To be more specific, the way I have tried to implement the auto commit delete is as follows:
    There is a UIX submitButton on the browse page called Delete. When clicked, this button triggers an event, which is caught by an event handler inside the page. The event handler causes the UIX servlet to take a forward to an ADF DataAction bound to the Delete method on the relevant view object. It thens follows a forward from the previously mentioned DataAction to another ADF DataAction bound to the Commit method for the application module. There is then a forward leading back to the browse page.
    Has anyone else encountered similar problems?

    did you figure this out?

  • Custom messages in adf/uix ?

    hi, how can i display a message like , " record(s) saved successfully " in adf/uix. ??
    zaibi.

    Hi,
    Edit your answres report and the Answres---result tab--> edit anlysis properties---> select No result setting combo box and select it custom message option and give your own message...
    Ex: Please look and the link
    http://imageshare.web.id/images/j2ifl5qxgqynqs0zthe.jpg
    Thanks
    Deva

  • Creating a LINK in ADF UIX table

    Dear sirs...
    is it possible to create a link for each row in an adf uix table? the link selects the row and forwards to another page.
    i have seen this in a JSP page, but uix????
    best regards

    Dear sirs...
    is it possible to create a link for each row in an adf uix table? the link selects the row and forwards to another page.
    i have seen this in a JSP page, but uix????
    best regards

  • ADF UIX Run Error

    Hi,
    i have created a simple input form using ADF UIX
    but when i run it on web i get this massage(given below)
    any suggestions,
    Best Reagrds,
    Muazzam
    Problem Report
    Condition TCP error was detected while attempting to retrieve the URL: 'http://130.1.2.184:8989/ADFtest-ViewController-context-root/dataPage1.do'.
    Problem Description: TCP/IP processing failure.
    Try RELOADING the page.
    This error message means that the target host did not properly respond to HTTP GET request after successfully establishing TCP connection. This may be due to problems like congestion on target host or transmission path.
    If this problem persists for extended periods of time, contact your network support team. Please, first make sure that the target is really reachable and not, for example, out of service due to maintenance.
    Current GMT Date/Time: Sat, 18 Jun 2005/09:02:56

    Hi Anubha,
    This error is reported from the model layer and not from UIX layer. If you would like to see more repsonse on this, it would be better if you can change the subject and post a new message with subject like - "Exception encountered from ADFm layer with deployed application." You may get more reponse.
    Thanks,
    Vijay Venkataraman

  • ADF UIX deployment error

    I created a very simple application in ADF UIX which just displays data from a database table. It runs perfectly when i run it locally. I then deployed it on to Application Server OC4J_Portal. I have updated ADF Libraries manually...and still getting the below mentioned errors..
    500 Internal Server Error
    oracle.jbo.common.ampool.ApplicationPoolException: JBO-30003: The application pool
    (app.model.AppModuleLocal) failed to checkout an application module due to the following
    exception:
    JBO-30003: The application pool (app.model.AppModuleLocal) failed to checkout an application module
    due to the following exception:
    at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1772)
    at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule
    (ApplicationPoolImpl.java:2611)
    at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:441)
    at oracle.jbo.http.HttpSessionCookieImpl.useApplicationModule(HttpSessionCookieImpl.java:230)
    at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:411)
    at oracle.jbo.common.ws.WSApplicationModuleImpl.createWorkerApplicationModule
    (WSApplicationModuleImpl.java:2457)
    at oracle.jbo.common.ws.WSApplicationModuleImpl.getCustomApplicationModule
    (WSApplicationModuleImpl.java:2416)
    at oracle.adf.model.bc4j.DCJboDataControl.setDataProvider(DCJboDataControl.java:1429)
    at oracle.adf.model.bc4j.DCJboDataControl.setApplicationModule(DCJboDataControl.java:200)
    at oracle.adf.model.bc4j.DCJboDataControl.(DCJboDataControl.java:171)
    at oracle.jbo.uicli.binding.JUApplication.(JUApplication.java:90)
    at oracle.jbo.uicli.binding.JUApplication.(JUApplication.java:81)
    at oracle.adf.model.bc4j.DataControlFactoryImpl.createSession(DataControlFactoryImpl.java:256)
    at oracle.adf.model.binding.DCDataControlReference.getDataControl(DCDataControlReference.java:63)
    at oracle.adf.model.BindingContext.get(BindingContext.java:411)
    at oracle.adf.model.binding.DCUtil.findSpelObject(DCUtil.java:228)
    at oracle.adf.model.binding.DCUtil.findContextObject(DCUtil.java:308)
    at oracle.adf.model.binding.DCIteratorBinding.(DCIteratorBinding.java:127)
    at oracle.jbo.uicli.binding.JUIteratorBinding.(JUIteratorBinding.java:59)
    at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:58)
    at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:47)
    at oracle.adf.model.binding.DCBindingContainerDef.createIterBindings
    (DCBindingContainerDef.java:197)
    at oracle.adf.model.binding.DCBindingContainerDef.createBindingContainer
    (DCBindingContainerDef.java:273)
    at oracle.adf.model.binding.DCBindingContainerReference.getBindingContainer
    (DCBindingContainerReference.java:40)
    at oracle.adf.model.BindingContext.get(BindingContext.java:427)
    at oracle.adf.model.binding.DCUtil.findSpelObject(DCUtil.java:228)
    at oracle.adf.model.binding.DCUtil.findContextObject(DCUtil.java:308)
    at oracle.adf.model.binding.DCUtil.findBindingContainer(DCUtil.java:536)
    at oracle.adf.model.binding.DCUtil.initializeBindingContainer(DCUtil.java:505)
    at oracle.cabo.adf.rt.InitModelListener.getBindingContainer(InitModelListener.java:566)
    at oracle.cabo.adf.rt.InitModelListener._initBindingContainer(InitModelListener.java:535)
    at oracle.cabo.adf.rt.InitModelListener._doModelUpdate(InitModelListener.java:96)
    at oracle.cabo.adf.rt.InitModelListener.eventStarted(InitModelListener.java:55)
    at oracle.cabo.servlet.AbstractPageBroker._fireUIXRequestEvent(Unknown Source)
    at oracle.cabo.servlet.AbstractPageBroker.handleRequest(Unknown Source)
    at oracle.cabo.servlet.ui.BaseUIPageBroker.handleRequest(Unknown Source)
    at oracle.cabo.servlet.PageBrokerHandler.handleRequest(Unknown Source)
    at oracle.cabo.servlet.UIXServlet.doGet(Unknown Source)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
    Page 500 Internal Server Error e 1 of 2
    http://glorfindel.jsi.com:7777/invapp/dataPage1.uix 3/9/2005
    at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:239)
    at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:604)
    at com.evermind.server.http.ServletRequestDispatcher.forwardInternal
    (ServletRequestDispatcher.java:317)
    at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
    at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
    at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run
    (ReleasableResourcePooledExecutor.java:192)
    at java.lang.Thread.run(Thread.java:534)
    ## Detail 0 ##
    at oracle.jbo.pool.ResourcePool.useResource(ResourcePool.java:337)
    at oracle.jbo.server.ConnectionPool.getConnectionInternal(ConnectionPool.java:87)
    at oracle.jbo.server.ConnectionPool.getConnection(ConnectionPool.java:66)
    at oracle.jbo.server.ConnectionPoolManagerImpl.getConnection(ConnectionPoolManagerImpl.java:56)
    at oracle.jbo.server.DBTransactionImpl.establishNewConnection(DBTransactionImpl.java:868)
    at oracle.jbo.server.DBTransactionImpl.initTransaction(DBTransactionImpl.java:1107)
    at oracle.jbo.server.DBTransactionImpl.initTxn(DBTransactionImpl.java:5823)
    at oracle.jbo.server.DBTransactionImpl2.connect(DBTransactionImpl2.java:117)
    at oracle.jbo.server.ApplicationModuleImpl.doPoolConnect(ApplicationModuleImpl.java:8005)
    at oracle.jbo.server.ApplicationModuleImpl.doPoolMessage(ApplicationModuleImpl.java:7766)
    at oracle.jbo.common.ampool.ApplicationPoolImpl.sendPoolMessage(ApplicationPoolImpl.java:3923)
    at oracle.jbo.common.ampool.ApplicationPoolImpl.prepareApplicationModule
    (ApplicationPoolImpl.java:1915)
    at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1739)
    at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule
    (ApplicationPoolImpl.java:2611)
    at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:441)
    at oracle.jbo.http.HttpSessionCookieImpl.useApplicationModule(HttpSessionCookieImpl.java:230)
    at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:411)
    at oracle.jbo.common.ws.WSApplicationModuleImpl.createWorkerApplicationModule
    (WSApplicationModuleImpl.java:2457)
    at oracle.jbo.common.ws.WSApplicationModuleImpl.getCustomApplicationModule
    (WSApplicationModuleImpl.java:2416)
    at oracle.adf.model.bc4j.DCJboDataControl.setDataProvider(DCJboDataControl.java:1429)
    at oracle.adf.model.bc4j.DCJboDataControl.setApplicationModule(DCJboDataControl.java:200)
    at oracle.adf.model.bc4j.DCJboDataControl.(DCJboDataControl.java:171)
    at oracle.jbo.uicli.binding.JUApplication.(JUApplication.java:90)
    at oracle.jbo.uicli.binding.JUApplication.(JUApplication.java:81)
    at oracle.adf.model.bc4j.DataControlFactoryImpl.createSession(DataControlFactoryImpl.java:256)
    at oracle.adf.model.binding.DCDataControlReference.getDataControl(DCDataControlReference.java:63)
    at oracle.adf.model.BindingContext.get(BindingContext.java:411)
    at oracle.adf.model.binding.DCUtil.findSpelObject(DCUtil.java:228)
    Can anyone please help me out with this...This is really urgent...
    Thanks a lot....

    Hi Anubha,
    This error is reported from the model layer and not from UIX layer. If you would like to see more repsonse on this, it would be better if you can change the subject and post a new message with subject like - "Exception encountered from ADFm layer with deployed application." You may get more reponse.
    Thanks,
    Vijay Venkataraman

  • [ADF-UIX] passing selected items to a custom method, how?

    Hi,
    ADF-UIX can be tricky, and im stuck atm building some functionality, I hope
    someone here can point me in a good direction
    I have a multipleSelection table filled with data from a ViewObject. I also
    have 2 MessageChoice components also filled with data from 2 ViewObjects.
    I made a custom method in my AppMod accepting 3 params and dragged that method
    on to a DataAction. And I have a submit button calling the DataAction.
    Now comes the tricky part, how can I pass the selected rows (radiobuttons) and
    the selected items from my MessageChoices to my custom method.
    I know I have to change something in paramNames[0].value but what exactly, specialy
    the multiselect from my table.
    Thanks in advance for any tips :)

    "what's the application module"
    JDev 10.1.3 leverages an Application Development Framework (ADF) that you can learn about here: http://download-east.oracle.com/docs/pdf/B25947_01.pdf
    Specifically, you'll want to look at chapters 2, 4, & 8 in the developer's guide to understand the framework and to understand how to use application modules to call service methods from a JSF page. You can also search this forum as there are other threads discussing this topic, but I'd recommend reviewing the developer guide first.
    This article I also found helpful:
    http://www.oracle.com/technology/products/jdev/tips/muench/mostcommon/index.html
    From my (short) experience, I've learned that you can call methods either using a bean or service methods on the Application Module. Since I am using ADF Business Components (BC), I try to implement any methods that interact with the BC's (view objects, etc.) as service methods on the Application Module (AM). If my method needs to purely implement logic related to the UI or Navigation, then I implement a method on a bean. The other case where I implement a method on a bean is if I need to do some pre-processing (i.e., gather info. about the state of the UI) prior to calling a service method on the AM (an example of this can be found in the dev guide related to the tableSelectMany component) - so there are some cases where the bean method will call a method on the AM - but again, if the method will update the model I try to use a method on the AM to accomplish this. Understanding the ADF framework is the first step (see the dev guide), and then I'd recommend looking at the SRDemo and previous posts on this forum.
    Finally, one thing that is really cool - if you define a service method on your AM, it shows up in the data control pallette - you can drag and drop the method on the .jspx page and all of the bindings/wiring is done automatically for you (including handling passing of parameters.)
    hope this helps.

  • ADF UIX and Database Changes

    We are in the process of designing an entirely new system. Our data model is still changing but we are also trying to develop programs using Jdeveloper ADF UIX. Here is our issue; whenever our database tables change, we have to refresh our developed programs. Doing a synchronize on the view objects doesn't seem to update the xml or java files. Is there an easy way to do this? I find that the xml or java files still reference old fields that have been renamed or removed from the database. We are using Jdeveloper 10g.
    Thanks!

    I am very new to Jdeveloper 10G...First of all i want to create a screen with multiple rows and this screen should open up in Insert mode...and then on the button click i want a database procedure to be called which would then insert these rows into the table after few validations...
    Now could you tell me how to create a screen with multiple rows in insert mode and if you have some example of referring to a database procedure then could you please point me to that?

Maybe you are looking for

  • How to change the default IDOC basic type from CREMAS05 to CREMAS04.

    Hi All, How to change the default IDOC basic type from CREMAS05 to CREMAS04 when sending Vendor Master Data. When I generate partner profile, the system will add the latest version of IDOC type which is CREMAS05 to the Outbound message. In my project

  • Valuation class in Inventory cube 0IC_C03

    I have to include valuation Class in standard cube 0IC_C03.Please help me with your inputs. what are the keyfigures I should assign in the update rule for valuation class chracteristics?. Thanks in advance for your time and help null

  • Does iMovie 9 allow export to camera?

    I was wondering if iMovie 9 allows you to export a project to a mini dv based camera like the old iMovies allowed you to.

  • Configuration Migration Utility (CMU) hangs???

    I'm on 7.5.2 and am having problems using CMU. It seems like everything just hangs when I try to create a configuration template. Ultimately I am trying to grab everything so I can replicate my system on another server but I have tried to collection

  • User identified externally

    I downloaded and installed Oracle Ex on Windows XP Professional SP 2 taking all of the defaults and all when swimmingly. Then I used sqlplus to create an externally identified user. The user was created. However if I enter "sqlplus /" to connect as t