UIX/XML: sideNav  layout problem

We're using UIXPages with a sideNav. The page itself contains a number of headers.
Whenever a header is rendered below the sidenav the entire header is on the left margin of the screen. However I think it looks better if all the headers are justified equally.
So the layout I get now is:
SSS HHHHH
SSS HHHHH
HHHH
HHHH
and what I want is:
SSS HHH
SSS HHH
___ HHH
___ HHH
where S is the sideNav and H is a header with all its data.
I tried putting all the headers in a tableLayout but that just didn't work, I always got the same layout.
Is there any way to do that?
Thanks,
Guido

Hm, tyour testcase works fine even when I added multiple levels of subheaders, but try my file.
It has one header with a number of subHeaders and the last subHeader is not indented correctly.
ok, the uix code is ugly but its supposed to work anyway - right?
Thanks,
Guido
<?xml version="1.0" encoding="windows-1252"?>
<page xmlns="http://xmlns.oracle.com/uix/controller">
<content>
<pageLayout xmlns="http://xmlns.oracle.com/uix/ui">
<start>
<sideNav>
<contents>
<link text="Markets" destination="../common/markets.uix">
</link>
<link text="Characteristics" destination="../common/characteristics.uix">
</link>
</contents>
</sideNav>
</start>
<contents>
<dataScope xmlns="http://xmlns.oracle.com/uix/ui" xmlns:fti="http://www.ftisoft.com">
<provider>
</provider>
<contents>
<form method="POST" name="mainForm">
<contents>
<header text="issueaction">
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
<header text="issueactiondeclaration" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
<header text="issueactionoptions" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
<header text="issueactionoption" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
<header text="issueactionprocedure" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
<header text="issueactionparticipants" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
<header text="issueactionparticipant" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
<header text="issueactionparticipantdef" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
<header text="generalcomment" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
<header text="issueactionentitlementdates" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
<header text="issueactionentitlementdate" >
<contents>
<tableLayout>
<contents>
<rowLayout vAlign="top">
<contents>
<tableLayout>
<contents>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
</contents>
</tableLayout>
</contents>
</rowLayout>
</contents>
</tableLayout>
</contents>
</header>
</contents>
</form>
</contents>
</dataScope>
</contents>
</pageLayout>
</content>
</page>

Similar Messages

  • UIX/XML: Multicolumn layout for messageTextInput (urgent ...please)

    I need to render a number of textInput UIX beans (and comboboxes a.s.o.) together with a label and render a small icon right next to it. Since our application renders a lot of theses controls on one screen, we want the controls to be aligned the following way:
    LLLL___TTTTT I
    LL_____TTTTTTTTT I
    LLLLLL_TTT I
    So, I want the labels left aligned one below the other, and the textInput fields should also be left aligned. (Like a table with one column for the labels and one column for the input textfields).
    I only managed to get a layout like that, when using separate controls for the textInput and the label. This however this has the downside, that whenever I get a validator error message, it doesn't display the name of the controls that have an invalid value.
    Is there any way to achieve such a layout with the message... controls?
    Thanks

    The easiest control to use for this layout is <labeledFieldLayout>:
    <labeledFieldLayout>
    <contents>
    <messageTextInput .../>
    <messageTextInput .../>
    <messageTextInput .../>
    <messageTextInput .../>
    </contents>
    </labeledFieldLayout>
    You'll have to live with right-aligned prompts, which are a standard
    enforced by all the messageXXX components.

  • Jdev10.1.3: Create an UIX XML Page; Problem: No UIX-Item available...

    hello, i am new to jdev. at the moment i'm trying to complete the tutorial "Developing Applications with Oracle ADF UIX". (http://www.oracle.com/technology/obe/obe9051jdev/uixTutorial/lesson_UIX.htm)
    my problem: i followed the instructions until i was told, to create an uix-xml page. the picture in the tutorial indicates that there should be an available adf-uix item, but in my jdev there isn't. i know, the tutorial is using an older version of jdeveloper but at least, there should be something similar to the adf-uix item in my jdev.
    i thought there is no need in installing some sort of uix files... or am i wrong?

    Hi,
    Oracle recommends JSF instead of UIX for new projects. If you want to use UIX, take JDeveloper 10.1.2 or 10.1.2.1 instead of 10.1.3.
    Regards,
    Georg

  • Problems with UIX-XML

    We are trying to use the UIX XML framework, but we have some problems:
    1)     We need to show the content of an uploaded file such as PDF, Word, Excel and other multimedia content.
    2)     We need to process the changes on a bc4j table with editable fields (we can read the values, but when we try to update the view object, an error occurs saying that the value is not serializable).
    3)     We need to load the shuttle component with data coming from a bc4j view object and to process the changes on that component (like the order of data).
    4)     We need to use bc4j uix tags in UIX templates.
    5)     We need to read the custom properties of view or entity object.
    TIA

    Renzo,
    I've read that 9.03 is suppost to have UIX/XML-interMedia support (any JDev guys want to confirm that).
    I've has this same issue and had to revert to BC4J-JSP for the interMedia stuff. That said, to get the UIX look, I was able to wrap that up inside of UIX-JSP pages using <rawText> and it work.
    Bill G...
    BTW - What part of Italia are located in?

  • UIX-XML

    Hello everyone,
    I'm fairly new to UIX-XML and I have several questions about it.
    First:
    I am creating a test project to try out UIX-XML. I wanted to place all the UIX files in a subdirectory within public html. When I try to run the application, the container claims that it can't find the file. But when I put the UIX files directly in public html, it runs fine. Isn't it possible to put UIX files in a subdirectory within public html?
    Second:
    After studying the tutorial about UIX-XML I know that you can create UIX-XML output just with java code. I assume that all the code should be placed in .java file. My problem is how I can use it to get the output of the .java file. Should I just create a JSP page and implement the .java file or is there another way?
    third:
    Can someone give me some good resources for more information about UIX-XML? I am having troubles to find good documentation about it.
    Can someone please help me with these problems?
    thanks a lot.
    john

    First:
    I am creating a test project to try out UIX-XML. I wanted to place all the UIX files in a subdirectory within public html. When I try to run the application, the container claims that it can't find the file. But when I put the UIX files directly in public html, it runs fine. Isn't it possible to put UIX files in a subdirectory within public html? Which version of JDEV are you using? I had no trouble putting a uix file in a sub directory under public html and running
    in either 902 or 903 preview.
    Second:
    After studying the tutorial about UIX-XML I know that you can create UIX-XML output just with java code. I assume that all the code should be placed in .java file. My problem is how I can use it to get the output of the .java file. Should I just create a JSP page and implement the .java file or is there another way?I am a little confused by your question. I think you mean how do you create a UINode tree and then render it to html.
    Is that what you mean? Have you read the UIX Developer's Guide in the JDev help? There is a section
    in UIX Basics about creating pages in uix that you might want to read.
    third:
    Can someone give me some good resources for more information about UIX-XML? I am having troubles to find good documentation about it.Again the best source of information is the UIX Developer's guide and reference in the help topics. Hopefully soon
    we will post some jdev sample projects with some demos that we have internally.

  • UIX-XML BC4J - Unexpected errors using paths and DeltaTree on a particular UIX page

    We are using a PageDescription to dynamically change a UIX tree using the DeltaTree technique described in the Dynamic Structure for For UIX Pages chapter of the UIX Developers Guide.
    We search for a particular node using PathUtils.FindPathWithNodeID(RenderingContext context, UINode from, java.lang.String nodeID), but this fails when the page contains nested ViewObjectScopes.
    The method throws a NullPointerException, and the render fails:
    29/08/02 9.08 Valutazioni: java.lang.NullPointerException
         oracle.cabo.ui.data.DataObjectList oracle.cabo.ui.collection.DataObjectListNodeList.getDataObjectList(oracle.cabo.ui.RenderingContext)
         int oracle.cabo.ui.collection.DataObjectListNodeList.size(oracle.cabo.ui.RenderingContext)
         int oracle.cabo.ui.BaseUINode.getIndexedChildCount(oracle.cabo.ui.RenderingContext)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         boolean oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.path.PathImpl, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         oracle.cabo.ui.path.Path oracle.cabo.ui.path.PathUtils._findPath(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.UINode, oracle.cabo.ui.path.PathUtils$Finder)
         oracle.cabo.ui.path.Path oracle.cabo.ui.path.PathUtils.findPathWithNodeID(oracle.cabo.ui.RenderingContext, oracle.cabo.ui.UINode, java.lang.String)
         oracle.cabo.ui.UINode com.websiteitalia.wsdk.uix.pageflow.PageFlowManager.getRootUINode()
         oracle.cabo.ui.UINode oracle.cabo.servlet.ui.UINodePageDescriptionProxy.getRootUINode()
         oracle.cabo.ui.UINode oracle.cabo.servlet.ui.UINodePageRenderer.getRootUINode(oracle.cabo.servlet.BajaContext, oracle.cabo.ui.RenderingContext, oracle.cabo.servlet.Page)
         oracle.cabo.ui.UINode oracle.cabo.servlet.ui.HTMLUINodePageRenderer.getRootUINode(oracle.cabo.servlet.BajaContext, oracle.cabo.ui.RenderingContext, oracle.cabo.servlet.Page)
         void oracle.cabo.servlet.ui.UINodePageRenderer.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         void oracle.cabo.servlet.AbstractPageBroker.renderPage(oracle.cabo.servlet.BajaContext, oracle.cabo.servlet.Page)
         oracle.cabo.servlet.Page oracle.cabo.servlet.PageBrokerHandler.handleRequest(oracle.cabo.servlet.BajaContext)
         void oracle.cabo.servlet.BajaServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
         boolean com.evermind.server.http.HttpRequestHandler.processRequest(com.evermind.server.ApplicationServerThread, com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
         void com.evermind.server.http.HttpRequestHandler.run(java.lang.Thread)
         void com.evermind.util.ThreadPoolThread.run()
    We found the element of the UIX page that causes the problem:
    <bc4j:viewObjectScope name="ElementsView" >
    <contents>
         <bc4j:rowScope name="NewElement" >
         <contents>     
              <bc4j:region automatic="false" >
                   <bc4j:key>
                        <bc4j:rowKey name="keyElement"/>
                   </bc4j:key>
                   <contents>
                        <bc4j:attrScope name="FlgState">
                        <contents>
                             <messageChoice name="FlgState" prompt="State" >
                                  <boundAttribute name="selectedValue">
                                       <concat>
                                            <bc4j:attrProperty name="value"/>
                                            <fixed text=""/>
                                       </concat>
                                  </boundAttribute>
                                  <contents>
                                       <!-- This is the nested vo scope causing the error -->
                                       <bc4j:viewObjectScope name="DecodeStateView" >
                                       <contents data:childData="list@DecodeState">
                                            <option data:value="StateCode"
                                                 data:text="StateDescription"/>
                                       </contents>
                                       </bc4j:viewObjectScope>
                                  </contents>
                             </messageChoice>
                        </contents>
                        </bc4j:attrScope>
                   </contents>
              </bc4j:region>
         </contents>
         </bc4j:rowScope>
    </contents>
    </bc4j:viewObjectScope>
    This usage of nested view object scopes has been explained in reply of a previous post, How to databind the children of a UIX XML choice, and before ours attempts to modify the tree it worked fine. Removing the nested view object scope the page makes the page render correctly, but we need it to retrieve the description of its state.
    We get the same behaviour (and a much similar stack trace, with the same oracle.cabo.ui.data.DataObjectList oracle.cabo.ui.collection.DataObjectListNodeList.getDataObjectList (oracle.cabo.ui.RenderingContext) throwing a NullPointerException) if we use NodeUtils.createPreorderDescendentAttributeEnumeration method instead of PathUtils.

    It's a bug in the DataObjectListNodeList class that's up at the top of
    the stack. It's been fixed for 9.0.3. The bit of XML that's triggering
    it isn't the <viewObjectScope>s, but the "data:childData".
    I believe you can workaround this bug by not passing a null RenderingContext to
    findPathWithNodeID(). Now, you don't have a real RenderingContext, and we
    don't especially need one - "null" is legit here, but I think if
    you just pass "new oracle.cabo.ui.RootRenderingContext()" then you'll
    get around this bug.

  • Uix-xml translated in java

    Hi everyone,
    I am having a little problem to code uix-xml in normal javacodes. I can built a normal tree with javacode and render it in a jsp file. Now I am trying to translate this:
    <ui:cellFormat>
    <ui:contents>
    <ui:include ctrl:node="defaultLayout" /> (defaultLayout is another uix file)
    </ui:contents>
    </ui:cellFormat>
    According to the tutorial and the javadocs, this should work:
    cellNode.setIndexedNodeList( new IncludeUINodeList() );
    IncludeBean include = new IncludeBean ();
    cellNode.addIndexedChild (include);
    But the includeBean still doesn't know that he should include "defaultLayout". Can someone please tell me how I can tell the includeBean, what to include? I really need a simple and precise example, please.....
    thx.
    John

    Try calling IncludeBean.setNode() to set the UINode to be "included".

  • UIX XML databound lookupvalues in comboboxes

    Is it possible in UIX XML to retrieve the options of a combobox (see below) from a dataObjectList?
    Example:
    <list multiple="false" size="1" >
    <contents>
    <option text="Option 1" value="opt1"/>
    <option text="Option 2" value="opt2"/>
    <option text="Option 3" value="opt3"/>
    <option text="Option 4" value="opt4"/>
    </contents>
    </list>
    I think it's quite important to be able to retrieve the text and value attributes of the options from a DataObjectList similar to a table, but I didn't find anything about that in the documentation.

    Thanks Ian, You're right that works fine.
    BUT one other problem: The databinding of the list's selectedValue doesn't work. I tried the following:
    <list multiple="false" size="1" data:selectedValue="isid@fti:issue" name="isidContext">
    <contents data:childData="IssueIDContext@fti:domValues">
    <option data:text="text" data:value="value"/>
    </contents>
    </list>
    But initially the combobox always shows the first option. However when I tried selectedValue="value" the statement works as expected.
    Any idea what i do wrong?

  • Which Web Client Framework? BC4J-JSP, UIX-JSP, UIX-XML, etc

    Trying to determine which, if any of the JDeveloper frameworks, to use for do web browser (HTML) clients.
    What are the pros/cons of BC4J-JSP, UIX-JSP, UIX-XML, etc?
    What are some common things you might rule out using one or more of the frameworks?
    I plan to be using BC4J, updating, inserting data (currently MS-SQL) and the apps will run on WebLogic 7 or Caucho Resin (webapps no EJB) in a cluster. I would like to be as RAD as possible and still be able to do what I need to do. One main concern is being able to add custom HTML/JavaScript for things like client side validation. I didn't see a way to do this when doing BC4J-JSP. Is that right?
    If I define any validation in the BC4J, will UIX utilized any of this to define a JavaScript validator or must it be redudantly defined?
    One other concern is what the framework requires in terms of architecture, like do I have to have sticky sessions in my web cluster or can it work fine stateless or stateful?
    For UIX-XML, how is this architected for performance? Specifically, is the XML effectively compiled and converted into something more efficient and performant or does it do XML parsing all the time? Is there any significant performance differences between the frameworks?
    Is there any significant difference in dealing with security? Anything in the framework to make it easier to handle certain users being able to see/edit different set of data?
    I have things like some groups can edit only certain entities (product info but not pricing), others only certain types of products (possibly subclass entities) and others situations where what fields than can edit varies. Obviously I can handle this programmatically, but I was wondering what the frameworks had to offer, especially in terms of having different views of the same data.
    Steve

    ...I am little confused then about how BC4J works and what is meant by "session" here.
    When you talk about appmodules in the plural, does this mean that there are potentially multiple instances of the same data on a single server or there is a common datastore with pending data and client specific stuff varying?
    The common datastore is the database. Each client (momentarily, during the span of their request) uses an instance of an application module from the pool. The pool can grow and shrink with load on your system and all of the various tuning parameters. Our doc on the AM Pool covers all the parameter settings and their users.
    What kind of "session" is this?
    It is an abstract notion of a session for a user. The implementation used for Web clients uses the HTTP Session Key as the session key. However, we have other session implementations (and you can provide your own to do custom stuff for more sophisticated needs). We don't store anything else in the HTTP Session to the best of my knowledge. This way in a cluster, the web container doesn't have to waste time propagating all of your serialized HTTP Session state among cluster members. This session key also include an id for the application module and together those provide the key to store your pending state in the database for the "Stateful == Managed State" feature.
    I assume that if I have a cluster which doesn't use session-to-same-server-affinity but uses JDBC for http-session persistance or distributed in-memory http-sessions then I cannot use stateful BC4J even though I can use http-sessions.
    You can use BC4J in this way because the browser will send a cookie that contains the key to your database-stored pending state. In this way, we work great in a server farm for failover and/or scalability reasons.
    Even if I use stateless BC4J, are there issues with round-robin'ng all requests to different servers in a cluster?
    As I said, both our Stateless and Stateful features are designed to be used in Server farms, no problem.
    BTW I wouldn't necessarily say you picked the wrongs terms for the modes, but I know what you mean. There's problems with these terms. I am trying to explain to my mgrs/engineers that there is some state in stateless transactions - that simply making everything "stateless" doesn't mean don't lose anything in a disastrous failure. I am arguing to get support for sessions in our cluster, that the performance gain and simplified development is worth it as long as you put intelligent limits on what you store in the session. Right now, they are insisting on randomly sending requests into two entirely different data centers, with two different clusters.
    Amen. I have seen too many developers make the mistake of trying to be totally stateless, only to completely complicate their development environment with having to peristent partially-completed transaction data to the database. I've seen this done with sets of "Shadow" tables (yuck!) or using hand-written techniques similar to what BC4J provides a robust implementation of in the box.
    We've tuned our "Stateless With Affinity for Server Farms" model over several releases of carefully studying the performance of the Web apps built by our internal Oracle Applications teams using BC4J (over 20 of them now, and growing!) so compared with a hand-written strategy for your web-tier state management, using BC4J's implementation will be much more productive for you.
    We're tuning and tweaking and enhancing it even more for the 9.0.3 release as new needs are highlighted with continued use by our customers (both Oracle internal and external).

  • (UIX XML) Sharing Connection objects between BC4J and custom java.

    If I have a UIX XML page that contains some BC4J application modules, then in the event handler I call [public static EventResult handleMyEventEvent (BajaContext context, Page page, PageEvent event..) ], which in turn calls some java classes I have written that take a java.sql.Connection object and access the database doing some updates/inserts with this Connection object (via JDBC)....HOW CAN I USE THE SAME TRANSACTION AS WAS USED IN THE BC4J APPLICATION MODULE...i.e. CAN I SHARE THE CONNECTION OBJECT BETWEEN BC4J AND MY OWN JAVA CLASSES THAT USE JDBC?
    What are the best ways to share such a transaction?
    Thanks,
    Paul.

    Would it be easier to use a custom method on the bc4j Application module?
    Take this scenario...
    1. User opens UIX XML web page which opens a bc4j App Module..it has a VO based on all employees.
    2. User presses the add button and a new employee is created (using the bc4j App Module).
    (Notice: no commit yet!)
    3. User presses the submit button...fires event REVIEW_SALARY.
    4. This event is 'handled' in the event section of the UML XML...it calls:-
    public static EventResult handleREVIEW_SALARYEvent (BajaContext context, Page page, PageEvent event)...
    5. I now want to call a java class I wrote that computes an employees new salary and updates the employee record with this new salary. This update will fail unless it is part of the same transaction as the one used by the bc4j App Module (that inserted the new employee).
    How best to proceed from here?
    How about having a method on the bc4j App Mod's VO called 'reviewSalary'? Calling this would use the same transaction? I could then call my java class from within the VO's method? However do I still have the same problem in that my java class expects to be passed the connection object?
    The approach you suggested previously seems a touch dangerous....in that these are not 'publically exposed'...and a new release of JDev may break my code.
    Thanks,
    Paul.

  • UIX XML & Shuttle with BC4J

    What is the way to use the UIX XML shuttle component with data coming from a bc4j view object?
    And how to process the changes on that component (like the sequence of data)?
    Finally, can we adopt UIX-XML-BC4J and be sure that all normal problems of an application are covered?
    TIA

    Thanks for your answer. I've tried the following code:
    <!-- "TipoProgettoView" is my view object, defined in a <bc4j:registryDef> section. -->
    <bc4j:viewObjectScope name="TipoProgettoView">
         <contents>
              <shuttle name="ordinamento" leadingHeader="Sequenza" leadingDescShown="true"
                        reorderable="true" trailingDescShown="true">
                   <leading>
                        <bc4j:list name="MyList">
                             <contents>
                                  <!-- "IdTipoProgetto" and "DTipoProgetto" are two attributes of my view object-->
                                  <bc4j:option value="IdTipoProgetto" text="DTipoProgetto"/>
                             </contents>
                        </bc4j:list>
                   </leading>
              </shuttle>
         </contents>
    </bc4j:viewObjectScope>
    But it doesn't work. The shuttle component gets rendered but the list is empty.
    Can you give me an example snippet code?
    "Normal" for me is an application with lists of element (editable, sortable), master-detail-detail, upload and display of object (image, Word doc, PDF, . . .), trees with items from db, use of personalized templates.

  • UIX XML & BC4J Editable Tables

    How to process the changes on a bc4j table with editable columns (in UIX XML)?
    We can read the values, but when we try to update the view object, it occurs an error saying that the read value is not serializable.

    I think the problem is that you are not getting at the viewObject correctly in your eventHandler.
    First, in the uiXML file, the handler should be something like:
                <ctrl:handlers>
                  <ctrl:event name="..." >
                    <bc4j:findRootAppModule name="EmpAppModuleLocal" >
                      <bc4j:findViewObject name="AllEmpsVO" >
                        <ctrl:method class="yourClass"
                                     method="applyChanges"/>
                        <bc4j:commit/>
                      </bc4j:findViewObject>
                    </bc4j:findRootAppModule>
                  </ctrl:event>
                </ctrl:handlers>Then you can write your applyChanges method like this:
    public static EventResult applyChanges(BajaContext context,
                                           Page page,PageEvent event)
      ViewObject view = (ViewObject) context.getProperty(
                JboConstants.BC4J_NAMESPACE,
                JboConstants.VIEW_OBJECT_PROPERTY);
      view.getCurrentRow().setAttribute("Ename","Smith");
      return null;
    }Please see:
    http://otn.oracle.com/jdeveloper/help/topic?inOHW=true&file=jar%3Afile%3A/u01/webapps/OHW/ohw-app/jdeveloper/helpsets/jdeveloper/uix_devguide_ohj.jar!/bc4j.html&linkHelp=false#HandlingEvents
    http://otn.oracle.com/jdeveloper/help/topic?inOHW=true&file=jar%3Afile%3A/u01/webapps/OHW/ohw-app/jdeveloper/helpsets/jdeveloper/uixref.jar!/bc4j/findViewObject.html&linkHelp=false

  • UIX XML - BC4J +

    We are implementing a functionality to insert new elements using BC4J components and UIX XML.
    We have carefully followed istruction from the UIX developer's guide (Business Components for Java Integration) but we notice some problems
    that we suppose are due to RowDefs with autocreate=true and the KEY attribute management flow.
    The components implemented have:
    1) A create method implemented for setting entity primary key using a DB sequence and other default values:
         protected void create(AttributeList attributeList) {
              super.create(attributeList);
              SequenceImpl seq = new SequenceImpl("VA_TIPO_PUNTEGGIO_SEQ", getDBTransaction());
              setAttribute("IdTipoPunteggio", seq.getSequenceNumber());
              setDataAgg(new Date( new Timestamp(System.currentTimeMillis())));
    2) A validation rule that checks for duplicate description using a ListCompare:
    <ListValidationBean
    OnAttribute="TitTipoPunteggio"
    OperandType="SQL"
    Inverse="true"
    ListValue="select tit_tipo_punteggio from va_tipo_punteggio where id_tipo_punteggio &#60;&#62; %IdTipoPunteggio%" >
    </ListValidationBean>
    Our problems are:
    1) The ID taken from a DB Sequence are increased by 2 (this doesn't occur using test on application module), and we suppose that it happens because row isn't
    found using the correct KEY property.
    2) When the validation's rule is triggered, row data aren't reloaded
    UIX code for apply event is:
    <event name="saveEvent" >
         <bc4j:findRootAppModule name="TipoPunteggioViewAppModule" >
              <bc4j:findViewObject name="TipoPunteggioView" >
                   <bc4j:findRow name="newRow">
                        <bc4j:setPageProperty name="key" >
                             <bc4j:stringKey />
                        </bc4j:setPageProperty>
                        <bc4j:setAttribute name="IdTipoPunteggio" />
                        <bc4j:setAttribute name="TitTipoPunteggio" />
                        <bc4j:setAttribute name="FlgObsoleto" />
                        <bc4j:insertRow/>
                        <bc4j:commit/>
                        <bc4j:executeQuery/>
                        <ctrl:go redirect="true" name="Anagrafiche_TipiPunteggio"/>
                   </bc4j:findRow>
              </bc4j:findViewObject>
         </bc4j:findRootAppModule>
    </event>
    However we have doubts on the code flow because we suppose the following istruction are missing before the findRow tag:
    <bc4j:setPageProperty name="keyTipoPunteggio" >
         <bc4j:parameter name="keyTipoPunteggio"/>
    </bc4j:setPageProperty>
    otherwise what is the reason of the keyStamp tag declared on the region?
    Moreover we don't understand the purpose of these instructions:
    <bc4j:setPageProperty name="keyTipoPunteggio" >
         <bc4j:stringKey />
    </bc4j:setPageProperty>
    because when validation on the row occurs, data of the rejected row are not reloaded.
    Perhaps would be useful an HowTo or a detailed explanation of interaction between registryDefs and event handler tags.
    TIA

    Our problems are:
    1) The ID taken from a DB Sequence are increased by 2 (this doesn't occur using test on application module), and we suppose that it happens because row isn't found using the correct KEY property.This is correct.
    2) When the validation's rule is triggered, row data aren't reloaded
    UIX code for apply event is: <snip>
    Replace it with this:
    <event name="saveEvent" >
    <bc4j:findRootAppModule name="TipoPunteggioViewAppModule" >
    <bc4j:findViewObject name="TipoPunteggioView" >
    <bc4j:setPageProperty name="key" >
    <bc4j:parameter name="key" />
    </bc4j:setPageProperty>
    <bc4j:findRow name="newRow">
    <bc4j:setAttribute name="IdTipoPunteggio" />
    <bc4j:setAttribute name="TitTipoPunteggio" />
    <bc4j:setAttribute name="FlgObsoleto" />
    <bc4j:insertRow/>
    <bc4j:setPageProperty name="key" >
    <bc4j:stringKey />
    </bc4j:setPageProperty>
    <bc4j:commit/>
    <bc4j:executeQuery/>
    <ctrl:go redirect="true" name="Anagrafiche_TipiPunteggio"/>
    </bc4j:findRow>
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>
    The main issue is that the string representation of the key changes when the row is inserted into the view object. It is a "short" key before insert and a "long" key after insert. Also, "short" keys cannot be found by ViewObject APIs to locate rows when the key is still "short".
    Here is the flow:
    1. Create page is rendered, auto-creating a new row with "short" key.
    2. In apply event handler, we must set the page property based on the submitted key
    to find the same row. Unfortunately, the "short" key does not find the old row, so
    we end up creating a new one for this request (incrementing the sequence).
    3. We may get as far as inserting the new row, upgrading to a "long" key.
    4. So we update the page property after a successful insert to the new "long" key.
    5. We rerender the page and use the page property to find the row, most likely the "long" key.
    [Note: if an exception occurred during set attribute, before insert row, the key will still
              be "short"]
    6. Once we get as far as attempting insertRow, the key will become "long" and locatable by
    ViewObject APIs.
    You don't encounter this problem in the tester because it can keep an in-memory handle to the row it
    is trying to insert for the duration of the insert attempt.
    The web-based UI relies on key-based references instead, which have the issue outlined above.
    We will follow up on this to see if "short" keys can be located by ViewObject APIs in future, allowing
    the same reference to be found across requests.
    Regards,
    John Fallows.

  • UIX/XML - BC4J - " a strategic decision"

    I have read that you (Oracle JDev Team) suggest using, for new applications, UIX/XML and BC4J.
    We are engaging our best resources trying to use these frameworks but, due to poor documentation/samples, we are in serious difficulties.
    Every day some new problems rise.
    What do you suggest?
    - To wait for release 9.0.3 hoping to see a better product and well documented?
    - To participate to training courses hoping to find them in our country (Rome - Italy)?
    - To continue to solve a problem every day with your help hoping that they are a reasonable number?
    Excuse my poor English.
    TIA

    I have read that you (Oracle JDev Team) suggest using, for new applications, UIX/XML and BC4J.
    We are engaging our best resources trying to use these frameworks but, due to poor
    documentation/samples, we are in serious difficulties.
    Every day some new problems rise.
    What do you suggest?
    - To wait for release 9.0.3 hoping to see a better product and well documented?That's a tough one to answer: it depends on where you are in the development
    cycle, your schedule etc. 9.0.3 will definitely be an improvement - and these
    aren't technologies that will be going away, so there'll be ongoing improvements
    in the future.
    - To participate to training courses hoping to find them in our country (Rome - Italy)?I wouldn't personally know if those are available. Sorry. :(
    - To continue to solve a problem every day with your help hoping that they are a
    reasonable number?We'll continue to help! If you're running into problems because of inadequacies
    on our documentation, that's our fault, not yours. The questions here on OTN
    have been essential in figuring out the most significant holes in BC4J UIX XML,
    and I'm sure they'll continue to be.
    Excuse my poor English.Your English is pretty darn good. No apologies needed!

  • UIX XML BC4J Choice

    Adam, In a previous thread In cactus, it has problem to generate report you mentioned that in order to implement a Choice within UIX/XML/BC4J one would have to write some code to do it. Specifically,
    1. Implement the oracle.cabo.ui.data.DataObjectList interface to wrap up the results of a BC4J query ...
    2. Write a MethodDataProvider ....
    3. Access the Method and display the Choices.
    Can you JDEV guys post a WORKING example of how to do it?
    An "EDIT.UIX" page where the USER makes a selection from the drop-down-list (Choice) and then updates the record with that selection would be nice.
    Bill G...

    Beautiful!
    I'll will look at implementing this over the weekend. I made a decision to temporarily go with UIX-JSP since I did not know how to implement a "UIX XML BC4J Choice".
    Now that you've delivered it I should be able to convert some of my UIX-JSP apps to UIX/XML.
    Thank You Good Buddy! (Think truck driver accent)
    Bill G...

Maybe you are looking for