ADF UIX: LOV searchText contains wrong value (maybe it is a bug)

I'm developing a WEB-application using ADF UIX.
I'm using JDeveloper 9.0.5.2 build 1618.
I've created a form with a messageLovInput field.
If I type e.g. Veszprém into the input field the content of the searchText parameter seems wrong. The URL is http://bela:8988/szszr/_ui.uix?_t=fred&enc=UTF-8&_minWidth=750&_minHeight=550&configName=BaseUIPBCfg1&contextURI=/szszr&redirect=/szszr/telepulesekLOV.do&source=levCimTelepules&searchText=Veszpr%C3%A9m&event=lovFilter
And the value of the searchText string in the lovFilter event is
[0] 'V' 86
[1] 'e' 101
[2] 's' 115
[3] 'z' 122
[4] 'p' 112
[5] 'r' 114
[6] ' ' 65533
The interesting thing is that the final letter (m) is missing from the string!
If I write Veszprém into the search field of the listOfValue and I press the Go button I get the right value in searchText.
The web.xml contains the following part:
<filter>
<filter-name>ADFBindingFilter</filter-name>
<filter-class>oracle.adf.model.servlet.ADFBindingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
<!--param-value>windows-1250</param-value-->
</init-param>
</filter>
The encoding of the UIX pages is windows-1250.
Any help is appreciated,
Gábor

repost

Similar Messages

  • [ADF UIX] LOVs, what does the "dot" path expression do?

    Hi
    In developing an ADF UIX web page, I've let JDeveloper create a messageLovInput on the "ExternalSource" field for me as follows:
    <messageLovInput
    model="${bindings.ExternalSource}"
    id="${bindings.ExternalSource.path}"
    destination="refCodesExternalSourceLevelOneLov.uix"
    partialRenderMode="multiple"
    partialTargets="_uixState"/>
    You'll notice that the id is set to blah-de-blah ".path". I can't find mention in the documentation of what the .path does. I think it should be documented in the section "About the Properties of the ADF Bindings" but has been excluded.
    Does anybody have any idea what this binding value provides? And specifically what functionality it provides in the id as a apart of a messageLovInput?
    Thanks!
    CM.

    Or to be more specific, the messageLovInput supplying the following ID with ".path":
    <messageLovInput
    model="${bindings.DepartmentId}"
    id="${bindings.DepartmentId.path}"
    destination="lovWindow0.uix"/>
    ...is used by the LOV lovSelect event "SET" call target property below in returning a value to the calling page?
    <event name="lovSelect">
    <set property="inputValue"
    value="${bindings.DepartmentId.inputValue}"
    target="${data.departmentsUIModel.DepartmentId}"/>
    </event>
    .....and trying something like the following to return more than one field to the calling page would be pointless:
    <event name="lovSelect">
    <compound>
    <set property="inputValue"
    value="${bindings.DepartmentId.inputValue}"
    target="${data.departmentsUIModel.DepartmentId}"/>
    <set property="inputValue"
    value="${bindings.DepartmentName.inputValue}"
    target="${data.departmentsUIModel.DepartmentName}"/>
    </compound>
    </event>
    ..... as the calling messageLovInput can only supply one ID .path?
    Oops, sorry, I hope that isn't too long winded. It's at the end of a very long day for me.....
    Thanks for your help!
    CM :)

  • ADF UIX LOV and JBO-33035

    I'm working on a UIX form which is based on a view, ViewA, which is built up from two entities - e.g. EntA and EntB. Between the entities there is a relation EntA is the child and EntB is the parent. In the view definition EntA is updateable and EntB is not updateable but referenced. ViewA contains all of the fields from EntA (including the foreign key) and Name field from EntB. I also created ViewB which is based on EntB.
    ViewA now has the following fields:
    AId (based on EmpA.Id, updateable)
    AField (based on EmbA.Field, updateable)
    A_B_Fk (based on EmbA.B_Fk, which is the fk. between EmpA and Emp B, updateable)
    BName (based on EmbB.Name, not updateable because of it is part of the referenced, but not updateable EntB)
    I put the views into an application module.
    After that I made a UIX input form based on ViewA. In this form the I displayed only the AField and BName fields. The latter is a messageLovInput node. Because ViewA.BName is a not updateable field I do not use 'model' attibute, I fill the text and prompt attribute with EL expressions instead. When the user presses the LOV button the LOV window appears. There in the 'onSelect' event I set ViewA.A_B_Fk as I saw in the 'ADF_UIX_ListOfValues' sample. Everything seams to work, the referenced EntB is properly filled according to the new value of ViewA.A_B_Fk, but I got JBO-33035: the currency has changed, the expected Key is ...
    I would like to know how should I implement a LOV in a case like this?
    It's very important for me to get through this problem, because I must solve several similar case and the closing date is so near.
    Any help appreciated,
    Gábor

    Ryan,
    Thanks, I've read it and I did my LOV based on that.
    But:
    In that article the LOV field (department id) was just a simple attribute of the EmployeesView and if you had changed dept. id then nothing else would have changed in EmployeesView. In my example if you changed ViewA.A_B_Fk then ViewA.BName would change!
    The problem could be the following (Suppose thet the ViewA edit form is in EditViewA.uix, and the LOV page is LOV.uix):
    If you change ViewA.A_B_Fk in LOV.uix (as we can see in the examle you mentioned) BC4J selects the appropriate EntB and fills ViewA.BName properly. After that EditViewA.uix is refreshed and prepareMethod called. It notifies that the referenced entity is not the same as before and it throws the exception (I don't know why).
    I made a workaround: in LOV.uix I put the selected value into a session variable and I use this value in the lovUpdate event of EditViewA.uix. It seems it works but it could be nicer.
    What do you think about this?
    Gábor

  • ADF UIX: How to narrow the value range of a MessageChoice?

    I have 3 ViewObjects:
    1st one is CustomerVO with an attribute called CustomerNo,
    2nd one is LinkmanVO with attributes LinkmanName and CustomerNo .
    And I do not create viewlink between them(for some reasons).
    3rd one is JobVO with attributes CustomerNo and LinkmanName.
    On UIX page, I have to Components:
    CustomerNo MessageTextInput(of JobVO),
    LinkmanName MessageChoice(of JobVO) from Lov mode of LinkmanView1Iterator.
    When user fills the CustomerNo MessageTextInput, I want the LinkmanName MessageChoice only show the LinkmanName has the same CustomerNo as the MessageTextInput.

    I am looking for the same functionality between two messagechoices. Did you get any responces to this question? Have you had any luck?
    Thanks,
    Mia
    [email protected]

  • ADF UIX: Get value in LOV messageList.

    I have a messageList that bind to a vo but when I call getTxtCodeCat method from the Struts form bean in Action Class, it does always return me a list index (0,1,2...).
    <struts:messageList model="${data.protecteddoc_GN_GnCodeSetupUIModel.CodeDescription}" name="txtCodeCat" prompt="[Code Category]" styleClass="DropdownMedium" required="yes" size="1">
    <contents childData="${data.protecteddoc_GN_GnCodeSetupUIModel.CodeDescription.displayData}">
    <option model="${uix.current}"/>
    </contents>
    </struts:messageList>
    Please advice how do I retrieve the value instead of index from the LOV?

    This thread is a duplicate. Direct all followups to:
    Urgent! ADF UIX:LOV messageList returned index no. during runtime.

  • [UIX] How To: Return multiple values from a LOV

    Hi gang
    I've been receiving a number of queries via email on how to return multiple items from a LOV using UIX thanks to earlier posts of mine on OTN. I'm unfortunately aware my previous posts on this are not that clear thanks to the nature of the forums Q&A type approach. So I thought I'd write one clear post, and then direct any queries to it from now on to save me time.
    Following is my solution to this problem. Please note it's just one method of many in skinning a cat. It's my understanding via chatting to Oracle employees that LOVs are to be changed in a future release of JDeveloper to be more like Oracle Forms LOVs, so my skinning skills may be rather bloody & crude very soon (already?).
    I'll base my example on the hr schema supplied with the standard RDBMS install.
    Say we have an UIX input-form screen to modify an employees record. The employees record has a department_id field and a fk to the departments table. Our requirement is to build a LOV for the department_id field such that we can link the employees record to any department_id in the database. In turn we want the department_name shown on the employees input form, so this must be returned via the LOV too.
    To meet this requirement follow these steps:
    1) In your ADF BC model project, create 2 EOs for employees and departments.
    2) Also in your model, create 2 VOs for the same EOs.
    3) Open your employees VO and create a new attribute DepartmentName. Check “selected in query”. In expressions type “(SELECT dept.department_name FROM departments dept WHERE dept.department_id = employees.department_id)”. Check Updateable “always”.
    4) Create a new empty UIX page in your ViewController project called editEmployees.uix.
    5) From the data control palette, drag and drop EmployeesView1 as an input-form. Notice that the new field DepartmentName is also included in the input-form.
    6) As the DepartmentName will be populated either from querying existing employees records, or via the LOV, disable the field as the user should not have the ability to edit it.
    7) Select the DepartmentId field and delete it. In the UI Model window delete the DepartmentId binding.
    8) From the data controls palette, drag and drop the DepartmentId field as a messageLovInput onto your page. Note in your application navigator a new UIX page lovWindow0.uix (or similar) has been created for you.
    9) While the lovWindow0.uix is still in italics (before you save it), rename the file to departmentsLov.uix.
    10) Back in your editEmployees.uix page, your messageLovInput source will look like the following:
    <messageLovInput
        model="${bindings.DepartmentId}"
        id="${bindings.DepartmentId.path}"
        destination="lovWindow0.uix"/>Change it to be:
    <messageLovInput
        model="${bindings.DepartmentId}"
        id="DepartmentId"
        destination="departmentsLov.uix"
        partialRenderMode="multiple"
        partialTargets="_uixState DepartmentName"/>11) Also change your DepartmentName source to look like the following:
    <messageTextInput
        id=”DepartmentName”
        model="${bindings.DepartmentName}"
        columns="10"
        disabled="true"/>12) Open your departmentsLov.uix page.
    13) In the data control palette, drag and drop the DepartmentId field of the DepartmentView1 as a LovTable into the Results area on your page.
    14) Notice in the UI Model window that the 3 binding controls have been created for you, an iterator, a range and a binding for DepartmentId.
    15) Right click on the DepartmentsLovUIModel node in the UI Model window, then create binding, display, and finally attribute. The attribute binding editor will pop up. In the select-an-iterator drop down select the DepartmentsView1Iterator. Now select DepartmentName in the attribute list and then the ok button.
    16) Note in the UI Model you now have a new binding called DCDefaultControl. Select this, and in the property palette change the Id to DepartmentName.
    17) View the LOV page’s source, and change the lovUpdate event as follows:
    <event name="lovSelect">
        <compound>
            <set value="${bindings.DepartmentId.inputValue}" target="${sessionScope}" property="MyAppDepartmentId" />
            <set value="${bindings.DepartmentName.inputValue}" target="${sessionScope}" property="MyAppDepartmentName" />
        </compound>
    </event>18) Return to editEmployees.uix source, and modify the lovUpdate event to look as follows:
    <event name="lovUpdate">
        <compound>
            <set value="${sessionScope.MyAppDepartmentId}" target="${bindings.DepartmentId}" property="inputValue"/>
            <set value="${sessionScope.MyAppDepartmentName}" target="${bindings.DepartmentName}" property="inputValue"/>     
        </compound>
    </event>That’s it. Now when you select a value in your LOV, it will return 2 (multiple!) values.
    A couple things to note:
    1) In the messageLovInput id field we don’t use the “.path” notation. This is mechanism for returning 1 value from the LOV and is useless for us.
    2) Again in the messageLovInput we supply “_uixState” as an entry in the partialTargets.
    3) We are relying on partial-page-refresh functionality to update multiple items on the screen.
    I’m not going to take the time out to explain these 3 points, but it’s worthwhile you learning more about them, especially the last 2, as a separate exercise.
    One other useful thing to do is, in your messageLovInput, include as a last entry in the partialTargets list “MessageBox”. In turn locate the messageBox control on your page (if any), and supply an id=”MessageBox”. This will allow the LOV to place any errors raised in the MessageBox and show them to the user.
    I hope this works for you :)
    Cheers,
    CM.

    Thanks Chris,
    It took me some time to find the information I needed, how to use return multiple values from a LOV popup window, then I found your post and all problems were solved. Its working perfectly, well, almost perfectly.
    Im always fighting with ADF-UIX, it never does the thing that I expect it to do, I guess its because I have a hard time letting go of the total control you have as a developer and let the framework take care of a few things.
    Anyway, I'm using your example to fill 5 fields at once, one of the fields being a messageChoice (a list with countries) with a LOV to a lookup table (id , country).
    I return the countryId from the popup LOV window, that works great, but it doesn't set the correct value in my messageChoice . I think its because its using the CountryId for the listbox index.
    So how can I select the correct value inside my messageChoice? Come to think of it, I dont realy think its LOV related...
    Can someone help me out out here?
    Kind regards
    Ido

  • ADF-UIX- How to populate multiple input fields from an lov?

    Like in Forms Developer where using an LOV we can populate multiple tex input items on selection of a value from the LOV, is it possible for us to do the same in ADF UIX.
    Iam usiing JDeveloper 10.1.2

    Have a look at this previous post:
    Re: Can return messageLovinput more than one value?

  • How can Filter ADF BC LOV values in ADF Faces UI?

    How can Filter ADF BC LOV values in ADF Faces UI?
    Hi i am bit struggle with filtering LOV values in ADF Faces UI.
    I have table In UI ,that is from ADF BC .Now i am Filtering that table data using Select one choice in same page.That SOC is named Type App:  ,So according to selection of Type in SOC table have to display.This portion is done.But my requirement is ,when i got perticular result table ,i want to add one more row related to that type only,so for that i had take popup and drag datacontrol as a form.In that form first column is Select one choice ,select Items will come from BC table.So here i want to filter those LOV values according selection in Type SOC.Suppose Type SOC contain Type1,Type2 values,then when i am selectin Type1,Type1 related date willl diplay on table,now click on ADD button popup will open and in that Type SOC will Dispaly only Type1 related values not Type 2 type values.Type1,Type2 values come from same Table.
    Here i am asking every one,please do help.

    fyi
    The HR schema I used to build the example application had some modifications in the context of https://tuhra2.samplecode.oracle.com/ .
    So after running "demo/schema/mksample" as documented in "Resetting Sample Schemas" ...
    at http://download.oracle.com/docs/cd/E11882_01/server.112/e10831/installation.htm#I6236
    ... I got "java.sql.SQLSyntaxErrorException: ORA-00904: "EMPLOYEES"."MODIFIED_DATE": invalid identifier ", using the example application in BindVarDefaultsInUIApp-v0.02.zip .
    So, I have updated the example application to match the reset HR schema:
    - see http://www.consideringred.com/files/oracle/2010/BindVarDefaultsInUIApp-v0.03.zip
    - see screencast at http://screencast.com/t/gd6zKn63j
    Because Re: af:table filter date format : task-flow navigation issue to get feedback, I created service request 3-2193340441 using My Oracle Support about (q1) and (q2).
    regards
    Jan

  • LOV /ADF UIX pages does not work on the older version od UIX page

    Hi
    I have recently migrated UIX project from the Jdeveoper 9i to Jdev10g version 1.0.1.2, everything work without any issue, however when I try to create a LOV or any component that are ADF-UIX based, but it does not work I don't even get any error, it just does not work based on the ADF-UIX (Expression base component),
    Any help to resolve this issue will be greatly appericated
    Thanks

    I too have problems with LOVs in UIX pages. I have
    some that you have to run twice to get back a value.To solve this problem,
    1) open your UIX page where you create a new row
    2) in the Structure window, click third tab "UI Model"
    3) double-click the control action binding corresponding to Create
    4) select CreateInsert from the list
    The problem is related to the fix we introduced for the "Blank Row Issue" (see http://www.oracle.com/technology/products/jdev/tips/muench/blankrow/index.html).
    If you have access to MetaLink, please refer to Note 299860.1 and Bug 4201020.
    Regards,
    Didier.

  • SUM function resulting WRONG values when some cell contains a string

    A very strange problem that can result in wrong financial calculations and big mistakes...
    If we have SUM function for some range of cells and one of them is treated as text string (I mean it's number in fact but Number is sure it's text string). than SUM function calulates ALL cells except this sell silently without errors and results in wrong result.
    For example we have cells and values
    A B
    =====
    1| 15 USD
    2| 0 USD
    3| 37 USD
    4| 1 USD
    5| 3 USD
    here the function SUM(B1:B5) should provide the result "56 USD"
    But if cell B5 is treated as text string (it can be still displayed as "3 USD" so we don't know it's treated as text string for some reason) than SUM(B1:B5) swill answer "53 USD".
    The problem is we DON'T know cell B5 is treated as text and we are fully sure that we have the correct sum of all 5 cells, in reality we see sum of 4 cells only....
    I think anybody working with financial or other important data can imagine how dangerous this SUM behaviour is.... I encountered several times that when importing data from Excel or by other ways numbers are imported as text strings. So if I have a lot of cells I'm not sure if all those cells are correctly styled or some of them for some unknown reason is treated as text string.
    In Microsoft Excel there is a very right solution. In MS Excel if any cell in the SUM is wrong format the SUM function simply provides error as a result. But in Numbers SUM doesn't tell us about error, it simply provides us with a wrong result!
    With formal logic the way SUM works in Numbers is total idiotism. If I ask to SUM B1:B5 than I definitely ask to sum ALL 5 cells, not 4, not 3, not 6 but 5 definite cells. If Numbers can't sum those exactly those 5 cells the only answer of the function should be ERROR.
    But Apple Numbers answers me some result of summing those cells that it's able to sum. Apple Numbers SUM function is not confused that I asked for SUM of 5 (not 4 or 3) cells and I expect to have this sum as a result.
    In fact Apple uses the right logic when we use another formula. If we use =B1B2+B3+B4B5 and any cell contains text string that we'll have error result the sam as in Microsoft Excel. So in this example Numbers behaves correctly.
    So why SUM (B1:B5) can provide totally different result as =B1B2+B3+B4B5?

    alexb2 wrote:
    So when I set format for my number as my local currency it's displayed as 123 XXX (XXX is my currency but it's not in latin). I see it's not only displayed but also stored as 123 XXX. That's different from Excel that stores only numbers in cells and shows number with prefix or suffix - Numbers storex number with prefix or suffix.
    No, you get this behavior because the original sheet is displaying values as currencies. I assumes that the import process pass it as a string because he doesn't recognize it as a currency value. As far as I know, Numbers stores the currency entries as a pure number and an indicator of the used currency.
    Here is an example.
    (a) the description of the numerical value (I underlined it: 456)
    <sf:number-cell sf:flags="4" sf:value="456" sf:col="1" sf:row="2">
    <sf:cell-style-ref sfa:IDREF="SFTCellStyle-46"/>
    <sf:content-size sfa:w="58.659881591796875" sfa:h="14"/>
    </sf:number-cell>
    (b) the description of the format (I underlined the used currency: XAM)
    <sf:cell-style sfa:ID="SFTCellStyle-46" sf:cell-style-default-line-height="12" sf:parent-ident="tabular-Basic-body-cell-style-id">
    <sf:property-map>
    <sf:SFTCellStylePropertyNumberFormat>
    <sf:number-format sfa:ID="SFTNumberFormat-23" sf:format-type="1" sf:format-string="#,##0.00 &#xA4;;-#,##0.00 &#xA4;" sf:format-decimal-places="2" sf:format-currency-code="XAM" sf:format-negative-style="0" sf:format-show-thousands-separator="true" sf:format-fraction-accuracy="-3" sf:format-use-accounting-style="false"/>
    </sf:SFTCellStylePropertyNumberFormat>
    <sf:SFTCellStylePropertyImplicitFormatType>
    <sf:number sfa:number="256" sfa:type="i"/>
    </sf:SFTCellStylePropertyImplicitFormatType>
    <sf:SFTCellStylePropertyFormatType>
    <sf:number sfa:number="257" sfa:type="i"/>
    </sf:SFTCellStylePropertyFormatType>
    </sf:property-map>
    </sf:cell-style>
    Of course, if the original currency string is not recognized, it can't be described as such a feature and the value is treated as a simple string.
    So may be at some moment my 123 XXX is treated like string value.
    Yes, find and replace is a nice tool when importing data - thanks for the tip. the last problem is with already Numbers files that were imported not today (or even createde as Numbers file) where some cell becomes string value after some editing.
    Here again, if you edit a currency string and replace it to a not recognized one, the result will be logically a string.
    There is an other way to give this result:
    copy a value from a cell formatted as XAM currency (just an example)
    paste it in a cell whose format is currency Euro (once again it's just an example).
    The result will be a string.
    The culprit is not the program, it's the user.
    I had several times this situation and last time I found error only because I have my budget in 2 programs - in Numbers and in another special budgeting program. As each program has advantages I have in fact 2 instances of the same budget.
    And when I changed some string in Numbers and another program I noticed the sum is different. I was sure it's another program somewhere buggy but noticed than Numbers simply ignores one of the budget strings and sums without it... In fact it was even not the string I changed, I remember I changed the buggy string about a week ago but I haven't compared budgets that time so my budget had a mistake for some time till I noticed it. If I used only Numbers without copy of budget in another program may be even today I won't notice the mistake.
    The same situation happened not once.
    I think that the choice made by Apple for SUM() is correct. You feel that it is wrong. It's useless to debate more, we will not change the behavior of the function.
    I try to give a workaround.
    The neater one is to add columns as I described in my first response.
    The given formula will clearly flag cells which aren't containing numerical values. If you move the SUM from the original range to the new one, the oddities will be flagged automatically.
    Here is an alternate workaround:
    The currency is XAM.
    In B4 I introduced a typo so the value is no longer a numerical one.
    Given that, the sum in the footer doesn't count the 34 (which is the normal behavior).
    In column C1 I entered =1*B
    which flagged the bad cell.
    The alternate is to use an auxiliary table like aux1
    In A1 I entered:
    =IF(ISERROR(INDIRECT(ADDRESS(ROW(),COLUMN(),,,"main"))),"",IF(ISBLANK(INDIRECT(A DDRESS(ROW(),COLUMN(),,,"main"))),"",1*INDIRECT(ADDRESS(ROW(),COLUMN(),,,"main") )))
    Exactly the same formula in B1, C1, D1, …
    So, the table will automatically grab the contents of the main table (just take care to insert more columns in aux1 than in main)
    In the footer row of aux1, insert a sum formula for columns where there is required.
    Looking at this footer will flag columns where a value may be "wrong" so, it will be necessary (but easy) to scan the column's content to find the red triangle(s).
    Yvan KOENIG (from FRANCE lundi 13 octobre 2008 13:27:40)

  • Display CLOB value in multiple rows in ADF UIX

    Hi,
    I have an ADF UIX application that uses data that are stored in a CLOB column in an Oracle Database.
    The table data is presented in a simple table in page1.uix, I use BC4J for accessing the Database and Oracle JDeveloper 9.0.5.2.
    The problem is that the CLOB data appear properly (meaning the rows appear OK) only in a frame (messageTextInput element) of a predefined size and if I change the element into a styledText or a formattedText the frame will not appear, but all the CLOB characters appear in a single row.
    Does anyone know how I can present the CLOB text data in a UIX page, without having a frame around the text, and at the same time keep the CLOB text in multiple rows?

    There's no completely trivial way. You'd have to do a bit of extra processing of your CLOB data. The most straightforward work to do is to convert "\n" into "<br>", and then pass that into a <formattedText>.

  • ADF UIX cancel/rollback button?

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

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

  • Binding Editors not present in ADF UIX

    Hi
    I have been having some trouble with accessing both the Boolean Binding Editor and the LOV Editor from the structure window, when in design mode of an ADF UIX page.
    My bindings are present, but when I 'Edit' the binding, the only option available to me is to select the Iterator and the attribute.
    The documentation keeps telling me to select different tabs, but there aren't any!
    Anyone had this problem????
    I'm on;
    Oracle IDE     9.0.5.16.27
    Business Components Version     9.0.5.16.0
    UML Modelers Version     9.0.5.14.78
    Versioning Support     9.0.5.14.78
    WebDAV Support Version     9.0.5.14.78
    Struts Modeler Version     9.0.5.4.22
    Designer Generators Framework     9.0.5.5.71
    ADF UIX     2.2.8
    java.version     1.4.2
    java.home     C:\j2sdk1.4.2_04\jre
    java.vm.name     Java HotSpot(TM) Client VM
    java.vm.vendor     Sun Microsystems Inc.
    java.vm.version     1.4.2-b28
    user.language     en
    user.region     <no value assigned>
    user.name     chris.bell
    user.home     C:\Documents and Settings\chris.bell
    user.dir     C:\Software\Oracle\jdev9052\jdev\bin
    os.name     Windows XP
    os.version     5.1
    os.arch     x86
    http.proxyHost     <no value assigned>
    http.proxyPort     <no value assigned>
    http.nonProxyHosts     <no value assigned>
    ide.patches     
    Thanks in advance
    Chris

    the primaryclient action should pass the rowkey of the current row (${uix.current.rowKeyStr}) as a parameter. This way the server can find the corresponding row on the server in an event handler.
    see
    http://www.oracle.com/technology/products/jdev/tips/jacobi/edittable/tip_adfuixtable_edit.html

  • ADF UIX programatic data binding

    Oracle ADF UIX Developer's Guide mentions the possibility to use the UIX framework in Java, to create new objects or alter the existing ones.
    E.g. we can create a table using a construct like:
    TableLayoutBean tlb = new TableLayoutBean();
    The same document demonstrates the data binding:
    BoundValue rows = new DataBoundValue(_YOUR_NAMESPACE, YOURNAME, "rows");
    tlb.setIndexedNodeList(new DataObjectListNodeList(rows));
    For "simple" attributes using DataObject DataObjectList, etc. the procedure is clear. But what about creating a data bound table or input text:
    <table model="${bindings.EmpView1}" ... >
    <messageTextInput model="${bindings.DeptCode}"/>
    It’s easy to understand that model="${bindings.EmpView1}" or model="${bindings.DeptCode}" are equivalent to multiple attribute bindings (data, validation, read-only, etc.), but it looks that the classes/methods resolving these equivalences and linking the bean to the corresponding DCControlBinding, are not public (or maybe I was not able to find them).
    How can we obtain programmatically, in Java, the same structure as described above (in XML)? The best would be to use the same classes used when the UIX XML document is parsed to create the page description.
    It would be very nice to be able to use a structure like
    tbl.setModel( new JUCtrlRangeBinding(...) );
    txt.setModel( new JUCtrlValueBinding(...) );
    or maybe
    txt.setAttribute( "model", new TextInputModelBoundValue(...) ) etc.
    In JSF we can do something like:
    ValueBinding vb = application.createValueBinding(value);
    component.setValueBinding(attributeName, vb);
    Can we do something similar in UIX?
    Any help will be appreciated,
    thanks,
    Mircea Ionita

    Since the code is already written, it's a pity that we can't use/extend it. I don't like to say it (sorry) but I find this design choice (implement the "model" only into the XML parsing layer) a little bit strange (or maybe I don't understand... ;-) ). We should (or we are supposed to) be able to do in java everything that we can do in XML.
    I would like to find more support/help for the programmatic approach. I have the feeling that you are too focalised on "use-our-state-of-the-art-tools/wizards-to-write-the-code-for-you" and you forgot that this is not suitable for all projects. E.g. our application creates the user interface according to a layout defined by each user. To generate it, we need to use at maximum the extension mechanism and we can't simply relay on "rendered" attribute etc.
    -When should we expect this new UIX release?
    -What about the UIX controller? The Struts controller will replace it?
    -What about the source code of uixexp2-demo.jar (distributed with ADF_UIX_component_guide)?
    -Why while debugging we can't set a method/class breakpoint on UIX classes (to understand the data flow) - the stack is secret?
    Thanks

  • ADF UIX Partial page rendering

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

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

Maybe you are looking for

  • Bt infinity in a block of flats

    Okay so I finally moved out from my parents house and bought a flat with my girl friend, however We are a bit broadband crippled here, I'm currently with Sky Broadband ( Naughty I know being with another provider and posting in a BT forum) Becasue w

  • GANTT CHART IN CPROJECTS- 4.0

    Can we have 3 sets of Dates (Basic Dates, Forecast Dates, Actual Dates) with both Earliest & Latest Dates options in cProjects as we have in R/3 PS ? If this is not possible, can we view both operative version and project version dates simultaneously

  • I have songs re-downloading into my library which i have already purchased. why is this happening?

    So i opened my iTunes and it asked my to log on which i did and then i had a whole album downloading again which i have already purchased. why is this happening?

  • Set a different default Language

    I'm really angry with Apple this time. This is something you couldn't be so difficult to change, but it is. I'm using MacOs in Italian and I don't want to change it. I like it. It's my language and it's my right to chose what I want. But I write in E

  • I want to use the previous version of Firefox

    ''Duplicate post, continue here - [https://support.mozilla.com/en-US/questions/826702]'' I do not like Firefox 4.01. I'd love to revert to the prior version. Thanks !