JComboBox, LOV-Binding, OutOfMemory

Hi all,
using a combobox with lov binding and a table with more than 600 entries is producing an outOfMemory-Error after a while.
That can be seen (e.g. in Task-manager under Windows) if just srolling up and down the popup window of the combobox (Very bad... :-( ).
Does anyone know how to prevent this ?
I think it must be some problem with the JUMultiAttrListCellRenderer class of oracle.jbo.uicli.controls but I am not sure about this.
Thanks in advance
Guido.

You're using a combo to populate 600 entries ....
Wow! Swing default Combo model is not designed to handle large sets of data specially if this data is an object like a Row representing a db table row...
What's basically happening is all the 600 or more entries are being loaded upfront which is sending all your cpu cycles and ultimately out-of-memory...
You may either 'set the vm parameter' for more memory
(use java -mx option)
or
you may use the Button Lov binding to pop this LOV list in a dialog which then uses delayed fetch.
or
you may write a 'custom ComboBox Model' that does not fetch all the data upfront.

Similar Messages

  • [2 Bugs] BC4J/JClient 9.0.3 JComboBox + LOV Binding

    I may have stumbled across some other bugs.. Here's how you may reproduce them:
    2 Tables (both are filled with proper values, PK's and FK's are set):
    EMP(ID: NUMBER, DESC: VARCHAR2, DEPT_ID: NUMBER)
    DEPT(ID: NUMBER, DESC: VARCHAR2)
    All appropriate ViewObjects and stuff have been generated and are in place.
    I have a JClient Panel and on it sits a JComboBox.
    The model of the JComboBox is set through the property editor to a
    JClient LOV Binding which looks as follows: DEPT.ID goes into EMP.DEPT_ID
    and the displayed LOV attribute is: DEPT.DESC
    Now, when I run the program, I attempt to select a new value from the JComboBox.
    This will succeed, but as soon as the JComboBox looses focus, I get this exception:
    oracle.jbo.domain.DataCreationException: JBO-25009: Cannot create an object of type:
    oracle.jbo.domain.Number with value: <insert displayed value in JComboBox here>When I add DEPT.ID to the displayed LOV attributes, no exception is thrown.
    That's because the String "(some number) (spaces) (some string)" will in
    fact be parsed to a valid number.
    However, because of this measure, only the DEPT.ID will be shown in the JComboBox
    when it's in its 'closed state'.
    This leads me to the second bug. When selecting multiple attributes to be
    displayed into the JComboBox, the order in which I put them doesn't seem to
    'stick'. Everytime the ID attribute is first and the rest follows in the same
    order in which the table's columns have been defined. Re-ordering them
    manually in the property editor, doesn't seem to help. The order will be
    forgotten after I close and re-open the property editor.
    The first bug doesn't seem to have any real negative effect. The new value
    is stored nonetheless; after committing and restarting the application,
    all new values are still available.
    (Stack Trace follows)
    Hope This Helps
    Arno

    As promised, here's the stack trace. The 'offending' value is "Rubriek".
    Exception occurred during event dispatching:
    oracle.jbo.domain.DataCreationException: JBO-25009: Cannot create an object of type:oracle.jbo.domain.Number with value:Rubriek
      java.lang.Object oracle.jbo.domain.TypeFactory.get(java.lang.Class, java.lang.Class, java.lang.Object)
        TypeFactory.java:713
      java.lang.Object oracle.jbo.domain.TypeFactory.getInstance(java.lang.Class, java.lang.Object)
        TypeFactory.java:80
      int oracle.jbo.uicli.binding.JUCtrlListBinding.findListIndex(java.lang.Object)
        JUCtrlListBinding.java:567
      java.lang.Object oracle.jbo.uicli.binding.JUCtrlListBinding.findMatchingListValue(java.lang.Object)
        JUCtrlListBinding.java:425
      java.lang.Object oracle.jbo.uicli.controls.JUMultiAttrListEditor.getItem()
        JUMultiAttrListEditor.java:65
      void javax.swing.plaf.basic.BasicComboBoxUI$EditorFocusListener.focusLost(java.awt.event.FocusEvent)
        BasicComboBoxUI.java:1394
      void java.awt.AWTEventMulticaster.focusLost(java.awt.event.FocusEvent)
        AWTEventMulticaster.java:171
      void java.awt.Component.processFocusEvent(java.awt.event.FocusEvent)
        Component.java:3642
      void javax.swing.JComponent.processFocusEvent(java.awt.event.FocusEvent)
        JComponent.java:1980
      void java.awt.Component.processEvent(java.awt.AWTEvent)
        Component.java:3535
      void java.awt.Container.processEvent(java.awt.AWTEvent)
        Container.java:1164
      void java.awt.Component.dispatchEventImpl(java.awt.AWTEvent)
        Component.java:2593
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1213
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      boolean java.awt.LightweightDispatcher.setFocusRequest(java.awt.Component)
        Container.java:2076
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1335
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Component.requestFocus()
        Component.java:4174
      void javax.swing.JComponent.grabFocus()
        JComponent.java:915
      void javax.swing.JComponent.requestFocus()
        JComponent.java:897
      void javax.swing.text.DefaultCaret.mousePressed(java.awt.event.MouseEvent)
        DefaultCaret.java:315
      void java.awt.AWTEventMulticaster.mousePressed(java.awt.event.MouseEvent)
        AWTEventMulticaster.java:221
      void java.awt.AWTEventMulticaster.mousePressed(java.awt.event.MouseEvent)
        AWTEventMulticaster.java:220
      void java.awt.Component.processMouseEvent(java.awt.event.MouseEvent)
        Component.java:3712
      void java.awt.Component.processEvent(java.awt.AWTEvent)
        Component.java:3544
      void java.awt.Container.processEvent(java.awt.AWTEvent)
        Container.java:1164
      void java.awt.Component.dispatchEventImpl(java.awt.AWTEvent)
        Component.java:2593
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1213
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      void java.awt.LightweightDispatcher.retargetMouseEvent(java.awt.Component, int, java.awt.event.MouseEvent)
        Container.java:2451
      boolean java.awt.LightweightDispatcher.processMouseEvent(java.awt.event.MouseEvent)
        Container.java:2210
      boolean java.awt.LightweightDispatcher.dispatchEvent(java.awt.AWTEvent)
        Container.java:2125
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1200
      void java.awt.Window.dispatchEventImpl(java.awt.AWTEvent)
        Window.java:922
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      void java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent)
        EventQueue.java:339
      boolean java.awt.EventDispatchThread.pumpOneEventForHierarchy(java.awt.Component)
        EventDispatchThread.java:131
      void java.awt.EventDispatchThread.pumpEventsForHierarchy(java.awt.Conditional, java.awt.Component)
        EventDispatchThread.java:98
      void java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional)
        EventDispatchThread.java:93
      void java.awt.EventDispatchThread.run()
        EventDispatchThread.java:85
    ## Detail 0 ##
    java.lang.NumberFormatException: k
      int java.lang.Integer.parseInt(java.lang.String, int)
        Integer.java:414
      int java.lang.Integer.parseInt(java.lang.String)
        Integer.java:463
      void java.math.BigDecimal.<init>(java.lang.String)
        BigDecimal.java:149
      void oracle.jbo.domain.Number.<init>(java.lang.String)
        Number.java:258
      java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[])
        native code
      java.lang.Object oracle.jbo.domain.TypeConvMapEntry.convert(java.lang.Class, java.lang.Class, java.lang.Object)
        TypeConvMapEntry.java:66
      java.lang.Object oracle.jbo.domain.TypeFactory.get(java.lang.Class, java.lang.Class, java.lang.Object)
        TypeFactory.java:681
      java.lang.Object oracle.jbo.domain.TypeFactory.getInstance(java.lang.Class, java.lang.Object)
        TypeFactory.java:80
      int oracle.jbo.uicli.binding.JUCtrlListBinding.findListIndex(java.lang.Object)
        JUCtrlListBinding.java:567
      java.lang.Object oracle.jbo.uicli.binding.JUCtrlListBinding.findMatchingListValue(java.lang.Object)
        JUCtrlListBinding.java:425
      java.lang.Object oracle.jbo.uicli.controls.JUMultiAttrListEditor.getItem()
        JUMultiAttrListEditor.java:65
      void javax.swing.plaf.basic.BasicComboBoxUI$EditorFocusListener.focusLost(java.awt.event.FocusEvent)
        BasicComboBoxUI.java:1394
      void java.awt.AWTEventMulticaster.focusLost(java.awt.event.FocusEvent)
        AWTEventMulticaster.java:171
      void java.awt.Component.processFocusEvent(java.awt.event.FocusEvent)
        Component.java:3642
      void javax.swing.JComponent.processFocusEvent(java.awt.event.FocusEvent)
        JComponent.java:1980
      void java.awt.Component.processEvent(java.awt.AWTEvent)
        Component.java:3535
      void java.awt.Container.processEvent(java.awt.AWTEvent)
        Container.java:1164
      void java.awt.Component.dispatchEventImpl(java.awt.AWTEvent)
        Component.java:2593
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1213
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      boolean java.awt.LightweightDispatcher.setFocusRequest(java.awt.Component)
        Container.java:2076
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1335
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Container.proxyRequestFocus(java.awt.Component)
        Container.java:1330
      void java.awt.Component.requestFocus()
        Component.java:4174
      void javax.swing.JComponent.grabFocus()
        JComponent.java:915
      void javax.swing.JComponent.requestFocus()
        JComponent.java:897
      void javax.swing.text.DefaultCaret.mousePressed(java.awt.event.MouseEvent)
        DefaultCaret.java:315
      void java.awt.AWTEventMulticaster.mousePressed(java.awt.event.MouseEvent)
        AWTEventMulticaster.java:221
      void java.awt.AWTEventMulticaster.mousePressed(java.awt.event.MouseEvent)
        AWTEventMulticaster.java:220
      void java.awt.Component.processMouseEvent(java.awt.event.MouseEvent)
        Component.java:3712
      void java.awt.Component.processEvent(java.awt.AWTEvent)
        Component.java:3544
      void java.awt.Container.processEvent(java.awt.AWTEvent)
        Container.java:1164
      void java.awt.Component.dispatchEventImpl(java.awt.AWTEvent)
        Component.java:2593
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1213
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      void java.awt.LightweightDispatcher.retargetMouseEvent(java.awt.Component, int, java.awt.event.MouseEvent)
        Container.java:2451
      boolean java.awt.LightweightDispatcher.processMouseEvent(java.awt.event.MouseEvent)
        Container.java:2210
      boolean java.awt.LightweightDispatcher.dispatchEvent(java.awt.AWTEvent)
        Container.java:2125
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1200
      void java.awt.Window.dispatchEventImpl(java.awt.AWTEvent)
        Window.java:922
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      void java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent)
        EventQueue.java:339
      boolean java.awt.EventDispatchThread.pumpOneEventForHierarchy(java.awt.Component)
        EventDispatchThread.java:131
      void java.awt.EventDispatchThread.pumpEventsForHierarchy(java.awt.Conditional, java.awt.Component)
        EventDispatchThread.java:98
      void java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional)
        EventDispatchThread.java:93
      void java.awt.EventDispatchThread.run()
        EventDispatchThread.java:85
    Exception occurred during event dispatching:
    oracle.jbo.domain.DataCreationException: JBO-25009: Cannot create an object of type:oracle.jbo.domain.Number with value:Rubriek
      java.lang.Object oracle.jbo.domain.TypeFactory.get(java.lang.Class, java.lang.Class, java.lang.Object)
        TypeFactory.java:713
      java.lang.Object oracle.jbo.domain.TypeFactory.getInstance(java.lang.Class, java.lang.Object)
        TypeFactory.java:80
      int oracle.jbo.uicli.binding.JUCtrlListBinding.findListIndex(java.lang.Object)
        JUCtrlListBinding.java:567
      java.lang.Object oracle.jbo.uicli.binding.JUCtrlListBinding.findMatchingListValue(java.lang.Object)
        JUCtrlListBinding.java:425
      java.lang.Object oracle.jbo.uicli.controls.JUMultiAttrListEditor.getItem()
        JUMultiAttrListEditor.java:65
      void javax.swing.plaf.basic.BasicComboBoxUI$EditorFocusListener.focusLost(java.awt.event.FocusEvent)
        BasicComboBoxUI.java:1394
      void java.awt.AWTEventMulticaster.focusLost(java.awt.event.FocusEvent)
        AWTEventMulticaster.java:171
      void java.awt.Component.processFocusEvent(java.awt.event.FocusEvent)
        Component.java:3642
      void javax.swing.JComponent.processFocusEvent(java.awt.event.FocusEvent)
        JComponent.java:1980
      void java.awt.Component.processEvent(java.awt.AWTEvent)
        Component.java:3535
      void java.awt.Container.processEvent(java.awt.AWTEvent)
        Container.java:1164
      void java.awt.Component.dispatchEventImpl(java.awt.AWTEvent)
        Component.java:2593
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1213
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      boolean java.awt.LightweightDispatcher.processFocusEvent(java.awt.event.FocusEvent)
        Container.java:2167
      boolean java.awt.LightweightDispatcher.dispatchEvent(java.awt.AWTEvent)
        Container.java:2130
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1200
      void java.awt.Window.dispatchEventImpl(java.awt.AWTEvent)
        Window.java:922
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      void java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent)
        EventQueue.java:339
      boolean java.awt.EventDispatchThread.pumpOneEventForHierarchy(java.awt.Component)
        EventDispatchThread.java:131
      void java.awt.EventDispatchThread.pumpEventsForHierarchy(java.awt.Conditional, java.awt.Component)
        EventDispatchThread.java:98
      void java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional)
        EventDispatchThread.java:93
      void java.awt.EventDispatchThread.run()
        EventDispatchThread.java:85
    ## Detail 0 ##
    java.lang.NumberFormatException: k
      int java.lang.Integer.parseInt(java.lang.String, int)
        Integer.java:414
      int java.lang.Integer.parseInt(java.lang.String)
        Integer.java:463
      void java.math.BigDecimal.<init>(java.lang.String)
        BigDecimal.java:149
      void oracle.jbo.domain.Number.<init>(java.lang.String)
        Number.java:258
      java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[])
        native code
      java.lang.Object oracle.jbo.domain.TypeConvMapEntry.convert(java.lang.Class, java.lang.Class, java.lang.Object)
        TypeConvMapEntry.java:66
      java.lang.Object oracle.jbo.domain.TypeFactory.get(java.lang.Class, java.lang.Class, java.lang.Object)
        TypeFactory.java:681
      java.lang.Object oracle.jbo.domain.TypeFactory.getInstance(java.lang.Class, java.lang.Object)
        TypeFactory.java:80
      int oracle.jbo.uicli.binding.JUCtrlListBinding.findListIndex(java.lang.Object)
        JUCtrlListBinding.java:567
      java.lang.Object oracle.jbo.uicli.binding.JUCtrlListBinding.findMatchingListValue(java.lang.Object)
        JUCtrlListBinding.java:425
      java.lang.Object oracle.jbo.uicli.controls.JUMultiAttrListEditor.getItem()
        JUMultiAttrListEditor.java:65
      void javax.swing.plaf.basic.BasicComboBoxUI$EditorFocusListener.focusLost(java.awt.event.FocusEvent)
        BasicComboBoxUI.java:1394
      void java.awt.AWTEventMulticaster.focusLost(java.awt.event.FocusEvent)
        AWTEventMulticaster.java:171
      void java.awt.Component.processFocusEvent(java.awt.event.FocusEvent)
        Component.java:3642
      void javax.swing.JComponent.processFocusEvent(java.awt.event.FocusEvent)
        JComponent.java:1980
      void java.awt.Component.processEvent(java.awt.AWTEvent)
        Component.java:3535
      void java.awt.Container.processEvent(java.awt.AWTEvent)
        Container.java:1164
      void java.awt.Component.dispatchEventImpl(java.awt.AWTEvent)
        Component.java:2593
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1213
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      boolean java.awt.LightweightDispatcher.processFocusEvent(java.awt.event.FocusEvent)
        Container.java:2167
      boolean java.awt.LightweightDispatcher.dispatchEvent(java.awt.AWTEvent)
        Container.java:2130
      void java.awt.Container.dispatchEventImpl(java.awt.AWTEvent)
        Container.java:1200
      void java.awt.Window.dispatchEventImpl(java.awt.AWTEvent)
        Window.java:922
      void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
        Component.java:2497
      void java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent)
        EventQueue.java:339
      boolean java.awt.EventDispatchThread.pumpOneEventForHierarchy(java.awt.Component)
        EventDispatchThread.java:131
      void java.awt.EventDispatchThread.pumpEventsForHierarchy(java.awt.Conditional, java.awt.Component)
        EventDispatchThread.java:98
      void java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional)
        EventDispatchThread.java:93
      void java.awt.EventDispatchThread.run()
        EventDispatchThread.java:85

  • JDev 9.0.3 LOV-Binding Bug?

    Hi!
    I've got a little problem with JDev 9.0.3 when migrating my project from JDev 9.0.2. All known Bugs from JDev 9.0.2 seem to be fixed but therefore other bugs appeared.
    My Problem in detail:
    I have 2 views (simplified):
    ORDERVIEW
    -- OrderId (DBSequence)
    -- OrderTypeIdFK (Number)
    ORDERTYPEVIEW
    -- OrderTypeId (Number)
    -- OrderTypeDescription (String)
    On a panel I display a textfield with OrderId and a ComboBox which should display the according OrderTypeDescription.
    So I created a LOVBinding on this ComboBox:
    LOV-ViewObject
    OrderTypeView
    -- OrderTypeId
    TargetViewObject
    OrderView
    -- OrderTypeIdFk
    LOV attributes to display
    -- OrderTypeDescription
    In JDev 9.0.2 this works perfectly, besides the missing search-function.
    When migrating to 9.0.3 without performing any changes I got the following exception when changing a OrderView-Row by selecting another OrderTypeDescription from the ComboBox:
    oracle.jbo.domain.DataCreationException: JBO-25009: Cannot create an object of type:oracle.jbo.domain.Number with value: Buy
    ("Buy" is one OrderTypeDescription)
    It seems that JDev wants to write OrderTypeDescription into the OrderTypeFK-Field. Of course, that can't work...
    If I change "LOV attributes to display" to "OrderTypeId" it works fine, but that's not what I want....
    Any suggestions? Thanks a lot
    Bernhard

    I have a problem very much like the one Bernhard described but in 9.0.2. A combobox with LOV-binding first worked fine but then I decided to make the control non-editable to force the user select one of the list items, not modifying the combobox contents by keyboard. After all, it makes no sense to let the user write something that has no counterpart in the LOV list. So I added 'myCombo.setEditable(false)' in my code. The result was that the combobox still shows Ok a description corresponding to an id value found in database but if I pick another value in the combobox list and try to update it to database then I get the same error Bernhard did. Is this the same bug? Should I upgrade to 9.0.3 (we are planning to do it) and get the patch to it or is there any other remedy?
    - Risto

  • LOV Binding issue in ADF JClient Component Demonstration

    hi
    There seems to be a problem with committing the changes made with the "LOV Binding" in the "ADF JClient Component Demonstration".
    see "ADF JClient Component Demonstration" :
    http://www.oracle.com/technology/sample_code/products/jdev/1012/jclient_guide/adf_jclientcomponentdemo.zip
    scenario (using JDeveloper 10.1.2) :
    (1) run componentdemo.StartFrame
    (2) click the first button to get to the "LOV Binding Demo"
    (3) click in the "State" field and press F3
    (4) select a new value from the "List Of Values", click OK
    (5) notice the value in the "State" field has changed, click "File" > "Exit"
    (6) click on "Commit" when asked "How do you want to close the transaction?"
    (7) run componentdemo.StartFrame again and navigate to the "LOV Binding Demo" again
    (8) notice that the "State" field still has its old value
    How can this be explained?
    thanks
    Jan Vervecken

    thanks for your reply Frank
    To verify what the behavior would be in the JDeveloper version it was built for, I tried to open the Workspace in JDeveloper 9.0.5.2 and got this "Unable to Open File" message:
    "File D:\<path>\ADFJClientComponentDemo.jws was saved in version 10120 file format and cannot be opened with an older version of JDeveloper 10g."
    To make sure, I downloaded this again
    http://www.oracle.com/technology/sample_code/products/jdev/1012/jclient_guide/adf_jclientcomponentdemo.zip
    and I got the same error message.
    Could you please hint to a solution for this (in JDeveloper 10.1.2 if possible).
    greetings
    Jan Vervecken

  • JUComboBox LOV Binding Issue

    Hi,
    I am getting a problem in JUComboBoxLovBinding.
    Problem Description --
    I have created a JComboBox with used LovBinding (using two view objects -- resortVO and testVO ). The _resortVO is the LOV VO instance.
    There is one button which rollbacks the transaction and create a new row for the non-lov view object instance.
    I followed the following steps -->
    1. Run the application
    2. Press the Button.
    3. Select an item (say 'ResortA') from the combo box
    This sets the ResortId for the _testVO's current row.
    4. Again press the Button
    5. Then select the same item again i.e. ResortA.
    This does not set the ResortId for teh _testVO's current row.
    Question -- Why the ResortId is not get selected in Step 5?
    The sample code is here --
    package testapp;
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.Rectangle;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.util.Hashtable;
    import javax.swing.DefaultListCellRenderer;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import oracle.jbo.ApplicationModule;
    import oracle.jbo.AttributeDef;
    import oracle.jbo.Row;
    import oracle.jbo.ViewObject;
    import oracle.jbo.client.Configuration;
    import oracle.jbo.uicli.binding.JUApplication;
    import oracle.jbo.uicli.jui.JUComboBoxBinding;
    import oracle.jbo.uicli.jui.JUPanelBinding;
    public class TestJUComboLovBinding extends JFrame
        private BorderLayout _mainLayout = new BorderLayout();
        private JPanel _panelCenter = new JPanel();
        private JUPanelBinding _panelBinding;
        /**  ADD CUSTOM MEMBER VARIABLES HERE  **/
        private JComboBox _resortComboBox = new JComboBox();
        private ViewObject _resortVO,_testVO;
        private JButton _createButton = new JButton("Create");
        private int count = 0;
        /** CUSTOM MEMBER VARIABLES ENDS HERE  **/
        public TestJUComboLovBinding()
            try
                jbInit();
            } catch (Exception e)
                e.printStackTrace();
        private void jbInit() throws Exception
            this.setSize(350, 210);
            this.setBounds( new Rectangle(100, 80, 400, 250));
            this.setTitle( "Frame Title" );
            ApplicationModule appModule =
                Configuration.createRootApplicationModule(
                "testapp.TestAppModuleImpl", "TestAppModuleLocal");
            JUApplication app = new JUApplication(appModule);
            _panelBinding = new JUPanelBinding(app.getName(), null);
            _panelBinding.setApplication(app);
            _panelCenter.setLayout(_mainLayout);
            customJbInit();
            this.getContentPane().add("Center",_panelCenter);
            _panelBinding.executeIfNeeded();
        private void customJbInit()
            _resortVO = _panelBinding.getApplicationModule().findViewObject("VResort");
            _testVO = _panelBinding.getApplicationModule().findViewObject("VTest");
            AttributeDef[] attrDefs = _resortVO.getAttributeDefs();
            String[] allAttrNames = new String[attrDefs.length];
            for (int i = 0; i < attrDefs.length; i++)
                allAttrNames[i] = attrDefs.getName();
    _resortComboBox.setModel(
    JUComboBoxBinding.createLovBinding
    _panelBinding,
    _resortComboBox,
    _testVO.getName(),
    null,
    testVO.getName().replace('.','') + "IterBinding",
    new String[] {"ResortId"},
    _resortVO.getName(),
    new String[] {"ResortId"},
    allAttrNames,
    null,
    null
    _resortComboBox.addActionListener(
    new ActionListener() {
    public void actionPerformed(ActionEvent e ){
    if(_testVO != null && _testVO.getCurrentRow() != null)
    System.out.println("Resort ID -- > " + count++ + ":" + _testVO.getCurrentRow().getAttribute("ResortId"));
    _createButton.addActionListener(
    new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    _panelBinding.getApplicationModule().getTransaction().rollback();
    _testVO.executeQuery();
    Row row = _testVO.createRow();
    _testVO.insertRow(row);
    panelCenter.add(resortComboBox,BorderLayout.NORTH);
    panelCenter.add(createButton,BorderLayout.SOUTH);
    public static void main(String[] args)
    TestJUComboLovBinding frame = new TestJUComboLovBinding();
    frame.addWindowListener(
    new WindowAdapter()
    public void windowClosing(WindowEvent evnt)
    System.exit(0);
    frame.setSize(new Dimension(400, 280));
    frame.pack();
    frame.setVisible(true);
    Thanks.

    Okay. So it's not the rollback.
    Reading your posting one more time, I see that in point 5 you write:
    "Then select the same item again".
    The problem does not occur when a different item is selected? If that's the case, then it's probably some kind of optimization in the binding that only sets the value when it actually changes.
    You could try to do something like that:
            _createButton.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        _panelBinding.getApplicationModule().getTransaction().rollback();
                        _testVO.executeQuery();
                        Row row = _testVO.createRow();
                        _testVO.insertRow(row);
                       // New line to insert:
                        _resortVO.reset();
            );This should ensure that a navigation happens.
    You can get the binding from the JUPanelBinding if your main application has access to that. See the getControlBinding() and findControlBinding() methods in JUFormBinding (a super class of JUPanelBinding).
    Sascha

  • LoV binding dynamically

    Can you please point me how to make ListOfValues binding dynamically instead of define it pageDefinition at design time?

    JDev 11.1.1.6.0
    Use case
    A dummy view definition is changed at runtime. there always exists variable columns. and LOV are defined at runtime.
    When we want to use this lov at page, the page must have page definition and the definition must have pre-defined "listOfValues' binding.
    This is the core problem. we cannot pre determine listOfValues binding count.
    So, the question is how to define 'listOfValues' binding definition to a pageDefinition(BindingContainer at runtime).
    This query is raised in the context of BUG 14553391
    Edited by: user771103 on Oct 4, 2012 10:09 PM

  • Possible Bug In Application Import (LOV binding lost for columns in IR)

    Hi,
    I've experienced strange behavior when after I imported application into APEX 4.1
    What I have done:
    1) Exported application from 4.0 - (db 11.1)
    2) Imported application into different instance - APEX 4.1 (db 11.2) to different workspace (using diferent schema) and with different application ID - manually changed (original was 106 new was 206)
    What happened:
    In Interactive Reports columns that were displayed as "Display as Text (Based on LOV, escape special characters)" lost their link to appropriate LOV - so the field "Named List of Values" shows "- Select Named LOV -" instead of the LOV name, which was assigned there in original application I exported.
    Also - Named LOV imported OK with application.
    And If application was imported under same ID, this issues was not there. So it looks only related if application ID changes from exported app.
    Any idea why such strange behaviour happens? Is it bug, if yes is there already fix for it?
    I have two workspaces on same db instance and want to migrate application between them - this make things complicated.
    Regards
    Ivan

    Hi,
    this is bug# 10369735 which has been fixed in 4.1. It was a problem of the export in 4.0 which didn't include all the necessary information. See Copying or exporting an application - bug?  LOVs not getting set in reports
    So I think you have two options:
    1) If you upgrade your existing 4.0 system to 4.1 you should be fine. If you now export your app all the LOV information will be included.
    2) If you export from a 4.0 system and import it into a 4.1 system you have fix your LOVs once again and then you are fine.
    Regards
    Patrick
    My Blog: http://www.inside-oracle-apex.com
    APEX Plug-Ins: http://apex.oracle.com/plugins
    Twitter: http://www.twitter.com/patrickwolf

  • Jcombobox used for both LOV as well as navigating row set

    Hello,
    I'm trying to achieve the functionality where a JCombobox can have both JULOVClientBinding and JUNaviationBinding... If I set both the combobox with both the models I get a BC4J JBO-34004 exception.
    The tried just setting up the combox with just the JUNavigationBinding and listen to listenselection events.
    to perform the lov functinality.
    But it turn out I get the event before the JUNavigation binding has had a chance to move the cursor...so I get the wrong row's data in the view object.
    Any ideas on how I may go about achieving this functinality?

    These bindings are designed to work independently and not in conjunction in one control!
    You may want to provide more details on your usecase so that we may provide suggestions.
    One could be to bind using Lov binding and then use the list itemChanged event to also perform navigation.

  • JComboBox binding problem or bug.

    I've a JClient app in wich I've a JCombo with standard LOV binding and setEditable(true) set.
    Clicking on that combo, sometime (but I wasn't able to understand when) it tries to set the description value into attribute and then throws an error.
    Debugging code I found that, in that situation the getSelectedItem() returns a String, but in normal situations it returns ViewRowImpl.
    Is it a bug into the model ?
    Is there any workaround ?
    TIA
    Tullio

    JDeveloper 9.0.3.1
    JavaSDK 1.4.2
    ViewObject vo = appModule.createViewObject("NameVO", "BusinesLogic.nameVO");
    jList.setModel(JUListSingleSelBinding.createNavigationBinding(panelBinding, jList, vo.getName(), null, vo.getName()+"Iter", new String[] {"Name"}, null));
    And this working - I see my list.
    But, in run mode methods
    jList.getSelectedValue()
    and
    jList.getModel().getElementAt(i)
    and others
    returning String :(
    In normal situation, this methods returning
    oracle.jbo.server.ViewRowImpl
    My be it's problem from
    [JDev 9.0.3.3] Bug in JUMultiAttrListCellRenderer ?
    and jdev903 working ONLY with jdk13 ???
    ... and jdev905 working ONLY with jdk14 ???

  • Null value in List Binding (enumeration mode)

    Hi,
    how can I declare a NULL value in a List binding with enumeration mode?
    A user should be able to select an empty entry in a combobox to update an attribute with a null value.
    I'm using JDev9052 and JClient.
    Any hints?
    Thanks,
    Markus

    Adding '-1' in JComboBox (addItem(new Integer(-1))) or in the control binding does not change the picture. Sorry.
    While play with different List bindings I have discovered that a Button LOV Binding works when using a "select * UNION select null from dual" view object. It does not work with a Combobox LOV binding. Why?
    Still, my problem List binding in enumeration mode (with Combobox) is unsolved. any hints or samples?
    My current combobox binding:
    <DCControl
    id="Job"
    DefClass="oracle.jbo.uicli.jui.JUComboBoxDef"
    SubType="DCComboBox"
    BindingClass="oracle.jbo.uicli.jui.JUComboBoxBinding"
    IterBinding="EmpView1Iterator"
    ApplyValidation="false"
    isDynamic="false"
    ListOperMode="0"
    StaticList="true"
    Editable="false" >
    <AttrNames>
    <Item Value="Job" />
    </AttrNames>
    <ValueList>
    <Item Value="ANALYST" />
    <Item Value="CLERK" />
    <Item Value="MANAGER" />
    <Item Value="PRESIDENT" />
    <Item Value="SALESMAN" />
    <Item Value="-1" />
    </ValueList>
    </DCControl>
    My current Button LOV binding:
    <DCControl
    id="Job2"
    DefClass="oracle.jbo.uicli.jui.JULovButtonDef"
    SubType="DCLovButton"
    BindingClass="oracle.jbo.uicli.jui.JULovButtonBinding"
    IterBinding="EmpView1Iterator"
    DTClass="oracle.adf.dt.objects.JUDTCtrlListLOV"
    ApplyValidation="false"
    isDynamic="false"
    ListOperMode="0"
    ListIter="JobListView1Iterator" >
    <AttrNames>
    <Item Value="Job" />
    </AttrNames>
    <ListAttrNames>
    <Item Value="Job" />
    </ListAttrNames>
    <ListDisplayAttrNames>
    <Item Value="Job" />
    </ListDisplayAttrNames>
    </DCControl>

  • JComboBox link

    Hello,
    new in Java and JDeveloper..
    2 questions (basics...) and I hope clear (Jclient) :
    1)
    I have a panel with a jcombobox (a username from the raf_util table)) :
    jComboBox1.setModel(JUComboBoxBinding.createLovBinding(panelBinding, jComboBox1, "RafTicketView1", null, "RafTicketView1Iter", new String[] {"CodeUtilApp"}, "RAfUtilAppView1", new String[] {"Username"}, new String[] {"Username"}, null, null));
    jComboBox1.addActionListener(new ActionListener()
    public void actionPerformed(ActionEvent e)
    jComboBox1_actionPerformed(e);
    The Username is an attribute from an EO and View (BC4J) - created from the table RAF_Ticket :
    SQL> desc raf_ticket;
    Nom NULL ? Type
    NO_TICKET NOT NULL NUMBER(6)
    HORODATE NOT NULL DATE
    CODE_UTIL_APP NOT NULL VARCHAR2(30)
    CODAGENC NOT NULL NUMBER(6)
    DESCR_PB NOT NULL VARCHAR2(30)
    CODE_UTIL_INTERV0 NOT NULL VARCHAR2(30)
    CODE_UTIL_INTERV1 VARCHAR2(30)
    REF_DOSS NOT NULL VARCHAR2(20)
    CODE_ACT NOT NULL VARCHAR2(2)
    NIV_URG NOT NULL NUMBER(2)
    TOP_DOS_UT VARCHAR2(1)
    DESCR_LIBRE VARCHAR2(1500)
    DATE_DEB_PREV DATE
    DATE_FIN_PREV DATE
    DFP_NEGOC VARCHAR2(1)
    CHARGE_PREV DATE
    DATE_DEB_INTERV DATE
    DATE_DERN_INTERV DATE
    DATE_CLOT DATE
    MOTIF_CLOT NUMBER(2)
    DATE_VAL_UTIL DATE
    TICKET_REF NUMBER(6)
    PROJET_REF VARCHAR2(30)
    I have below the jcombobox 2 Jtextfields where I want to put wordings for agency (LIBAGENCE) and company (LIBSOCIE) which belongs to these tables :
    SQL> desc raf_AG;
    Nom NULL ? Type
    CODAGENC NOT NULL NUMBER(6)
    LIBAGENCE NOT NULL VARCHAR2(40)
    CODREGIO NOT NULL VARCHAR2(3)
    CODSOCIE NOT NULL VARCHAR2(3)
    USERCREAT VARCHAR2(30)
    DATECREAT DATE
    USERMODIF VARCHAR2(30)
    DATEMODIF DATE
    SQL> desc raf_soci;
    Nom NULL ? Type
    CODSOCIE NOT NULL VARCHAR2(3)
    LIBSOCIE NOT NULL VARCHAR2(40)
    ADRESSE1 VARCHAR2(40)
    ADRESSE2 VARCHAR2(40)
    CODPOSTA NUMBER(5)
    LIBVILLE VARCHAR2(40)
    SQL> desc raf_util;
    Nom NULL ? Type
    USERNAME NOT NULL VARCHAR2(30)
    USER_ID NOT NULL NUMBER(3)
    CODAGENC NOT NULL NUMBER(6)
    TYPE_UTIL VARCHAR2(1)
    The relation between them is in Sql :
    "select libagence, libsocie from raf_util, raf_ag, raf_soci where raf_util.codagenc=raf_ag.CODAGENC and raf_ag.CODSOCIE=raf_soci.CODSOCIE and raf_util.username= ?";
    ? = the data selected in the jcombobox.
    do I have to write code for this. If yes, is the private void jComboBox1_actionPerformed(ActionEvent e), the right method?
    How can i get the selected data from the jcombobox to pass it to the Sql parameter? I have tried
    String strSelItem = jComboBox1.getSelectedItem().toString(); but it seems that It is not the right way.
    And the first time, when I enter in the form, how to make the first value "selected" from the jcombobox?
    Or could I put some automatic links between the 3 fields (BC4J, View, Module) in the document inspector properties for the 2 Jtextfield? so that when I choose a username, the 2 fields will display automatically the wordings.
    2) this form could be called from a "RootForm" (menu) in various manners. today :
    private void jButton8_actionPerformed(ActionEvent e)
    JUApplication app = panelBinding.getApplication();
    if (app.findFormBinding(TICKET) == null)
    // instead of 'ordersPanelBinding.setApplication(app)', register
    // the panelBinding under an explicit key
    app.addFormBinding(TICKET, TicketPanelBinding);
    TicketForm.setPanelBinding(TicketPanelBinding);
    TicketPanelBinding.execute();
    TicketForm.setVisible(true);
    else
    TicketForm.setVisible(true);
    Depending on these various call (Jbutton), I want to do different treatments in the Panelview.java for Ticket.
    How can I pass parameters from the menu to the form ?
    Instructions?
    Thanks and best regards.
    Thierry (France)

    frank,
    1) yes, that's it. the combo box selection just query existing records (UI Editor - property inspector - model - Jclient LOV Binding). How to get the field selected in my form program (java class) or is it possible automatically ?
    2) Yes, I have differents Jbutton in the menu. They action is to call the same form but with a parameter so that I can put different controls in the form depending on this parameter received. Basic but I don't know how to do that with java and jdev.
    3) how to select a data in the jcombobox by default ?

  • JComboBox Usage Question

    Hi guys,
    I have a JClient form which have two JComboBox (State and City). When the State combo box changes it's value, the City combo box's allowable values would change. Both combo boxes are based on database tables. How can I synchronize these two comboboxes, so when the first box changes its' value then the second box will requery the database and display a different set of allowable values?
    Regards
    Tony

    Shailesh,
    These are my code. With the LOV binding, the combox are binded to table but the city combo will not refresh it's lists after state combo change the value.
    stateCombo.setModel(JUComboBoxBinding.createLovBinding(
    panelBinding, stateCombo, "CustomerView", null,
    "CustomerViewIter", new String[] {"StateId"}, "StateLookupView",
    new String[] {"StateId"}, new String[] {"StateName"}, null, null));
    cityCombo.setModel(JUComboBoxBinding.createLovBinding(
    panelBinding, cityCombo, "CustomerView", null,
    "CustomerViewIter", new String[] {"CityId"}, "CityLookupView",
    new String[] {"CityId"}, new String[] {"CityName"}, null, null));
    stateCombo.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    cityCombo.repaint();
    }); From the datamodel you posted at the beginning, the lovVOname for the second combo should have been CityView1, or in other words you should pick the viewobject that is viewlinked to the master StateVO.
    Here's how it works.
    Once you select a state in the states vo, the viewlinked collection on the detail changes to reflect all cities for that state. The Lov combo should then 'redraw' it's list as a reaction to the rangeRefreshed event from BC4J for the detail VO.

  • JSF selectOneChoice  VS.  Swing JComboBox

    I have been so impressed with how clean it is using a JSF selectOneChoice with a selectItem and selectItems.
    Using selectItem.itemValue and selectItem.itemLabel is intuitive, and fills a very common need.
    I'm wondering if there is a similar type of component I can use with a JComboBox. It seems that a LOV binding needs a target data collection (and iterator); but I simply want a JComboBox to display labels and manage values, independent from an iterator.
    Any suggestions are very much appreciated!!!
    Jeffrey

    Well I would just like to update this thread as more than a year has passed since I began working on ADF BC & Faces. Coming from a SWING background, I've learned quite a lot about web development. For starters, it’s not as easy as "Drag and Drop" and RAD like some demo videos or evangelical pitches makes it out to be. There is a steep learning curve (about half year with daily interaction with JDeveloper) to get comfortable with this technology. Personally speaking, a firm understanding of page definition bindings was the hardest to grasp, but then again maybe I’m just a bit slow. Compared to SWING or desktop UI development, the richness of ADF Faces UI is limited to boundaries of the web browser.
    <br>
    However, within the last month, our team has made great strides in taking the first step in launching a ported module our internal system (legacy Oracle Forms used by hundreds of hospital employees). Our Dynamic JDBC authentication piece was the keystone for our first module (a modified version from Steve’s infamous “not yet documented samples”). Trying to take full advantage of this technology, we also have created reusable pages and BC components for CRUD operations.
    <br>
    There is still plenty of work to be done as we are now struggling with team development (difficult due to multiple file modifications within JDev’s). We are also eagerly awaiting several rich UI in the next release of ADF Faces. Overall, the light at the end of the tunnel is starting to appear and I hope the Oracle ADF team and everyone on this forum continues to actively contribute to the growth of this community.
    <br>
    Here are a couple of screen shots of our app if you are interested.
    http://i108.photobucket.com/albums/n23/zeoneozero/login.jpg
    http://i108.photobucket.com/albums/n23/zeoneozero/menu.jpg
    http://i108.photobucket.com/albums/n23/zeoneozero/spcreg.jpg
    Cheers,
    -Z

  • JClient Binding newbie problem

    Hi someone ;-)
    I have two views:
    - ListePosteStdView: binded to the table LISTE_POSTE_STANDARD (see SQL below)
    - TypePosteView1: binded to the table TYPE_POSTE (see SQL below)
    I have a panel displaying
    - a JComboBox, with a LOV binding ListePosteStd, updating a view named TypePosteView1
    - a JList, with a Navigation binding to the view TypePosteView1
    What I need is the JList to display the values of TypePosteView1 corresponding to the selected entry in the JComboBox.
    The table LISTE_POSTE_STANDARD has two entries
    The table TYPE_POSTE has two entries, both binded to the first entry of LISTE_POSTE_STANDARD.
    It doesn't work ! What I have instead is that
    - When I select the first entry in the combo box, it displays correct values for JList (the two entries binded to LISTE_POSTE_STD)
    - Then I select the second entry in the combo box, it displays an entry displayed previously, not belonging to that LISTE_POSTE_STD
    - Then I select the first entry again in the combo box and all entries in the combo box and the JLIst are removed (I can't select anything).
    Shouldn't a LOV binding enable me to select a value from a view and accordingly update the value to be displayed in another view ?
    What went wrong ?
    Thanks
    Rodolphe
    ========================= TABLES ==================================
    CREATE TABLE LISTE_POSTE_STANDARD (
    ID NUMBER (10) NOT NULL,
    NAME_FR VARCHAR2 (50),
    NAME_NL VARCHAR2 (50),
    CONSTRAINT LPOSTE_STD_PK
    PRIMARY KEY ( ID ) ) ;
    CREATE TABLE TYPE_POSTE (
    ID NUMBER (10) NOT NULL,
    ID_LISTE_POSTE_STANDARD NUMBER (10) NOT NULL, !!!! FOREIGN KEY TO LISTE_POSTE_STANDARD
    ID_NATURE NUMBER (10),
    ID_UNITE NUMBER (10),
    NUM_CODE VARCHAR2 (30) NOT NULL,
    NAME_FR VARCHAR2 (50) NOT NULL,
    NAME_NL VARCHAR2 (50),
    DESCR_FR VARCHAR2 (2000),
    DESCR_NL VARCHAR2 (2000),
    CONSTRAINT TYPPOSTE_PK
    PRIMARY KEY ( ID ) ) ;
    ALTER TABLE TYPE_POSTE ADD CONSTRAINT TYPPOSTE_LPOSTE_STD_FK
    FOREIGN KEY (ID_LISTE_POSTE_STANDARD)
    REFERENCES AGATTE.LISTE_POSTE_STANDARD (ID) ;
    ========================= CODE ====================================
    package agatte.listepostesstd.gui;
    import java.awt.*;
    import javax.swing.*;
    import oracle.jbo.uicli.jui.*;
    import oracle.jbo.uicli.controls.*;
    import oracle.jbo.uicli.binding.*;
    import oracle.jdeveloper.layout.*;
    import java.awt.Dimension;
    import javax.swing.JComboBox;
    import java.awt.Rectangle;
    import javax.swing.JList;
    import javax.swing.JTextField;
    import oracle.jbo.uicli.jui.JUComboBoxBinding;
    import oracle.jbo.uicli.jui.JUListSingleSelBinding;
    import oracle.jbo.uicli.jui.JUTextFieldBinding;
    public class ListePostesStdPnl extends JPanel implements JClientPanel
    // Panel binding definition used by design time
    private JUPanelBinding panelBinding = new JUPanelBinding("Test.BcModule", null);
    private JComboBox jComboBox1 = new JComboBox();
    private JList jList1 = new JList();
    * The default constructor for panel
    public ListePostesStdPnl()
    * Constructor that takes a shared panel binding
    public ListePostesStdPnl(JUPanelBinding binding)
    setPanelBinding(binding);
    * the JbInit method
    public void jbInit()
    this.setLayout(null);
    this.setSize(new Dimension(700, 524));
    panelBinding.setFindMode(true);
    jComboBox1.setBounds(new Rectangle(95, 30, 124, 20));
    jComboBox1.setModel(JUComboBoxBinding.createLovBinding(panelBinding, jComboBox1, "TypePosteView1", null, "TypePosteView1Iter", new String[] {"IdListePosteStandard"}, "ListePosteStandardView", new String[] {"Id"}, new String[] {"NameFr"}, null, null));
    jList1.setBounds(new Rectangle(45, 140, 170, 345));
    jList1.setModel(JUListSingleSelBinding.createNavigationBinding(panelBinding, jList1, "TypePosteView1", null, "TypePosteView1Iter", new String[] {"NameFr"}, null));
    this.add(jList1, null);
    this.add(jComboBox1, null);
    public static void main(String [] args)
    try
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    catch(Exception exemp)
    exemp.printStackTrace();
    ListePostesStdPnl panel = new ListePostesStdPnl();
    JUTestFrame.testJClientPanel(panel, panel.getPanelBinding(), new Dimension(400, 300));
    * JUPanel implementation
    public JUPanelBinding getPanelBinding()
    return panelBinding;
    public void setPanelBinding(JUPanelBinding binding)
    if (binding.getPanel() == null)
    binding.setPanel(this);
    if (panelBinding == null || panelBinding.getPanel() == null)
    try
    panelBinding = binding;
    jbInit();
    catch(Exception ex)
    }

    Hi someone ;-)
    I have two views:
    - ListePosteStdView: binded to the table LISTE_POSTE_STANDARD (see SQL below)
    - TypePosteView1: binded to the table TYPE_POSTE (see SQL below)
    I have a panel displaying
    - a JComboBox, with a LOV binding ListePosteStd, updating a view named TypePosteView1
    - a JList, with a Navigation binding to the view TypePosteView1
    What I need is the JList to display the values of TypePosteView1 corresponding to the selected entry in the JComboBox.
    The table LISTE_POSTE_STANDARD has two entries
    The table TYPE_POSTE has two entries, both binded to the first entry of LISTE_POSTE_STANDARD.From the above description, it seems you need NavigationBinding in the combobox so that when you navigate the combo, appropriate detail set is shown in the list box. The listbox itself may be bound to yet another NavigationBinding or LovBinding as your case may be.

  • Performance issues with LOV bindings in 3-tier BC4J architecture

    We are running BC4J and JClient (Jdeveloper 9.0.3.4/9iAS 9.0.2) in a 3-tier architecture, and have problems with the performance.
    One of our problems are comboboxes with LOV bindings. The view objects that provides data for the LOV bindings contains simple queries from tables with only 4-10 rows, and there are no view links or entity objects to these views.
    To create the LOV binding and to set the model for the combobox takes about 1 second for each combobox.
    We have tried most of tips in http://otn.oracle.com/products/jdev/tips/muench/jclientperf/index.html, but they do not seem to help on our problem.
    The performance is OK (if not great) when the same code is running as 2-tier.
    Does anyone have any good suggestions?

    I can recommend that you look at the following two bugs in Metalink: Bug 2640945 and Bug 3621502
    They are related to the disabling of the TCP socket-level acknowledgement which slows down remote communications for EJB components using ORMI (the protocol used by Oracle OC4J) to communicate between remote EJB client and server.
    A BC4J Application Module deployed as an EJB suffers this same network latency penalty due to the TCP acknowledgement.
    A customer sent me information (that you'll see there as a part of Bug# 3621502) like this on a related issue:
    We found our application runs very slow in 3-Tier mode (JClient, BC4J deployed
    as EJB Session Bean on 9iAS server 9.0.2 enterprise edition). We spent a lot
    of time to tune up our codes but that helped very little. Eventually, we found
    the problem seemed to happen on TCP level. There is a 200ms delay in TCP
    level. After we read some documents about Nagle Algorithm,  we disabled a
    registry key (TcpDelAckTicks) in windows2000  on both client and server. This
    makes our program a lot faster.
    Anyway, we think we should provide our clients a better solution other than
    changing windows registry for them, for example, there may be a way to disable
    that Nagle's algorithm through java.net.Socket.setTcpNoDelay(true), in BC4J,
    or anywhere in our codes. We have not figured out yet.
    Bug 2640945 was fixed in Oracle Application Server 10g (v9.0.4) and it now disables this TCP Acknowledgement on the server side in that release. In the BugDB, I see backport patches available for earlier 9.0.3 and 9.0.2 releases of IAS as well.
    Bug 3621502 is requesting that that same disabling also be performed on the client side by the ORMI code. I have received a test patch from development to try out, but haven't had the chance yet.
    The customer's workaround in the interim was to disable this TCP Acknowledgement at the OS level by modifying a Windows registry setting as noted above.
    See Also http://support.microsoft.com/default.aspx?kbid=328890
    "New registry entry for controlling the TCP Acknowledgment (ACK) behavior in Windows XP and in Windows Server 2003" which documents that the registry entry to change disable this acknowledgement has a different name in Windows XP and Windows 2003.
    Hope this info helps. It would be useful to hear back from you on whether this helps your performance issue.

Maybe you are looking for