Oracle.jbo.ReadOnlyAttrException) JBO-27008: Attribute in view object cannot be set.
Hi all,
I have three table:
Member : MemberID(pk), Email, Adress, ProvinceID (fk)
Province : ProvinceID(pk), ProvinceName, CountryID(fk)
Country : CountryID(pk), CountryName.
After created three entities and object view for all of them.
In ProvinceView : i add a parameter for CountryID using Bind Variables + View Criteria to select Province from Country
In MemberView : i add more two entity: Province and Country then Add more attributes: CountryID (from Province table), CountryName(from Country table).
Create LOVs for CountryID and ProvinceID....that's i want: selected Country ----> Province auto show but when i selected Country, an error show like this :
(oracle.jbo.ReadOnlyAttrException) JBO-27008: Attribute Countryid in view object PhaiMemberacbView1 cannot be set.
What's solutions to fix this. Thanks
Hi,
Please verify if the Attribute Countryid has been marked as "Updatable" in the view object.
Best Regards,
Ankit Gupta
Similar Messages
-
Strange error oracle.jbo.ReadOnlyAttrException: JBO-27008:
Hello, friends!
I use uix for my application (generated with JHeadstart).
Now I have one problem, and this problem is very strange. One of VOs throws exception after commit changes. First time it was error
(oracle.jbo.ReadOnlyAttrException) JBO-27008: for atribute mgrList
at oracle.jbo.AttrValException.<init>(AttrValException.java:112)
at oracle.jbo.ReadOnlyAttrException.<init>(ReadOnlyAttrException.java:40)
at oracle.jbo.server.ViewRowImpl.setAttribute(ViewRowImpl.java:815)
at oracle.jbo.jbotester.JboTesterUtil.setData(JboTesterUtil.java:173)
Then I setted updateable property of MgrList attribute to always and now i have this error:
oracle.jbo.domain.DataCreationException: JBO-25009: Cannot create an object of type:java.util.List with value:[{}]
I don't know why, but all worked fine yestarday.
I think that this is not view project problem. Because the same problem appear on the other pages (oracle.jbo.ReadOnlyAttrException: JBO-27008:) and when i test model project with bc4j tester today. But all this pages and data model worked correctly before and i did not edit this.
And this problem look like the bug. Because this error must appear for attributes which are always updatable and when i do not update it.
Maybe you can tell me how to solve this problem, please.
Thank you.We havent written any custom code in the extended EO.
Case 1 : Without any extension (basic oracle behaviour)
When the Page is first Rendered, the Org Name (LOV) Field is populated on the screen,and OrgId (form value) is also populated with it.
(this is a create screen and Org is populated with the Default Org name and ID)
Case 2 : With we have Extended EO
(we havent generated the EOImpl of extended EO so we cannot possible write any custom code to insert/ update any of the attrubutes.
This Case gives an error as mentiond in my previous mails. -
Oracle.jbo.ReadOnlyAttrException: JBO-27008
Hello, friends!
I use uix for my application (generated with JHeadstart).
Now I have one problem, and this problem is very strange. Some of VOs throws exception after commit changes:
(oracle.jbo.ReadOnlyAttrException) JBO-27008: for one atribute, which is readonly and i did not try to update it.
at oracle.jbo.AttrValException.<init>(AttrValException.java:112)
at oracle.jbo.ReadOnlyAttrException.<init>(ReadOnlyAttrException.java:40)
at oracle.jbo.server.ViewRowImpl.setAttribute(ViewRowImpl.java:815)
at oracle.jbo.jbotester.JboTesterUtil.setData(JboTesterUtil.java:173)
I don't know why, but all worked fine before.
I think that this is not view project problem. Because the same problem appear on the other pages (oracle.jbo.ReadOnlyAttrException: JBO-27008:)
and when i test model project with bc4j tester now. But sometimes this problem appears on the uix page testing and does not appear when i test this
VO with bc4j tester. For example, one my VO hane primary key: Id, updeteable=always, display=false and when i try to update another
VO in this page i recieve same error. This error appears for attributes which are always updatable and for attributes which
are readonly and when i do not update it.
Maybe you can tell me how to solve this problem, please.
Thank you.Erik, thank you.
But I have not custom logic in the isAttributeUpdateable() method.
This attribute is transient (java.util.List). And the get attribute method is:
public List getMyList()
{ if (MovesListAdapter!=null)
return MovesListAdapter;
ViewObject vo = this.getApplicationModule().findViewObject("MyVO");
System.out.println(rowSetName);
RowSet rowSet = vo.findRowSet(rowSetName);
if (rowSet==null)
rowSet = vo.createRowSet(rowSetName);
rowSet.setWhereClauseParam(0,this.getIdOsnovanie());
rowSet.executeQuery();
rowSet.setRangeSize(-1);
String rowSetName = "MovesRowSet"+this.getIdOsnovanie();
System.out.println("MovesRowSet row count="+rowSet.getRowCount());
MovesListAdapter = new RowIteratorListAdapter(rowSet, true);
MovesListAdapter.setEmptyRowsAtTop(1);
List t=MovesListAdapter;
return MovesListAdapter;
} -
Null Pointer Exception after adding Transient attribute in View Object
Hello Experts
I am using Jdev 11.1.2.3. I have added a transient attribute in view object and set default value to another view object attribute via view accessor of view link between view objects. the value of expression is ItemMasterRO.Description, where ItemMasterRO is the name of view accessor define in the view link and Description is the name of attribute which is in other view object.
Data is retrieving as per my requirements, but when i click on add record button in application module, it is throwing a null pointer exception. Here is stack trace
oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.NullPointerException, msg=null
at oracle.jbo.ExprEval.internalEvaluateGroovyScript(ExprEval.java:1218)
at oracle.jbo.ExprEval.doEvaluate(ExprEval.java:1253)
at oracle.jbo.ExprEval.evaluateForRow(ExprEval.java:1075)
at oracle.jbo.server.AttributeDefImpl.evaluateTransientExpression(AttributeDefImpl.java:2132)
at oracle.jbo.server.ViewRowStorage.getAttributeInternal(ViewRowStorage.java:1856)
at oracle.jbo.server.ViewRowImpl.getAttributeValue(ViewRowImpl.java:1967)
at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:829)
at oracle.jbo.server.ViewRowImpl.getAttrInvokeAccessor(ViewRowImpl.java:911)
at oracle.jbo.server.ViewRowImpl.getAttribute(ViewRowImpl.java:859)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.internalGetAttributeValueFromRow(JUCtrlValueBinding.java:1213)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeFromRow(JUCtrlValueBinding.java:764)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeFromRow(JUCtrlValueBinding.java:792)
at oracle.jbo.uicli.binding.JUCtrlAttrsBinding.updateValuesFromRow(JUCtrlAttrsBinding.java:145)
at oracle.jbo.uicli.jui.JULabelBinding.updateValuesFromRow(JULabelBinding.java:114)
at oracle.jbo.uicli.binding.JUIteratorBinding.updateValuesFromRows(JUIteratorBinding.java:349)
at oracle.adf.model.binding.DCIteratorBinding.setupRSIstate(DCIteratorBinding.java:867)
at oracle.adf.model.binding.DCIteratorBinding.refreshControlAndNotifyDCE(DCIteratorBinding.java:707)
at oracle.adf.model.binding.DCIteratorBinding.refreshControl(DCIteratorBinding.java:676)
at oracle.jbo.uicli.binding.JUIteratorBinding.refreshControl(JUIteratorBinding.java:485)
at oracle.adf.model.binding.DCIteratorBinding.refresh(DCIteratorBinding.java:4555)
at oracle.adf.model.binding.DCBindingContainer.refreshExecutables(DCBindingContainer.java:3542)
at oracle.adf.model.binding.DCBindingContainer.internalRefreshControl(DCBindingContainer.java:3375)
at oracle.adf.model.binding.DCBindingContainer.refreshControl(DCBindingContainer.java:2938)
at oracle.jbo.jbotester.NavigationBar.doInsertAction(NavigationBar.java:143)
at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:110)
at oracle.jbo.uicli.controls.JUNavigationBar$NavButton.actionPerformed(JUNavigationBar.java:118)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.NullPointerException
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.acceptGetProperty(PogoGetPropertySite.java:32)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:237)
at bc4j_com_syncreon_model_queries_SequenceItemContainerXrefVO_ItemDescription_null_gs.run(bc4j_com_syncreon_model_queries_SequenceItemContainerXrefVO_ItemDescription_null_gs.groovy:1)
at oracle.jbo.ExprEval.internalEvaluateGroovyScript(ExprEval.java:1200)
... 62 more
## Detail 0 ##
java.lang.NullPointerException
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.acceptGetProperty(PogoGetPropertySite.java:32)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:237)
at bc4j_com_syncreon_model_queries_SequenceItemContainerXrefVO_ItemDescription_null_gs.run(bc4j_com_syncreon_model_queries_SequenceItemContainerXrefVO_ItemDescription_null_gs.groovy:1)
at oracle.jbo.ExprEval.internalEvaluateGroovyScript(ExprEval.java:1200)
at oracle.jbo.ExprEval.doEvaluate(ExprEval.java:1253)
at oracle.jbo.ExprEval.evaluateForRow(ExprEval.java:1075)
at oracle.jbo.server.AttributeDefImpl.evaluateTransientExpression(AttributeDefImpl.java:2132)
at oracle.jbo.server.ViewRowStorage.getAttributeInternal(ViewRowStorage.java:1856)
at oracle.jbo.server.ViewRowImpl.getAttributeValue(ViewRowImpl.java:1967)
at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:829)
at oracle.jbo.server.ViewRowImpl.getAttrInvokeAccessor(ViewRowImpl.java:911)
at oracle.jbo.server.ViewRowImpl.getAttribute(ViewRowImpl.java:859)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.internalGetAttributeValueFromRow(JUCtrlValueBinding.java:1213)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeFromRow(JUCtrlValueBinding.java:764)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeFromRow(JUCtrlValueBinding.java:792)
at oracle.jbo.uicli.binding.JUCtrlAttrsBinding.updateValuesFromRow(JUCtrlAttrsBinding.java:145)
at oracle.jbo.uicli.jui.JULabelBinding.updateValuesFromRow(JULabelBinding.java:114)
at oracle.jbo.uicli.binding.JUIteratorBinding.updateValuesFromRows(JUIteratorBinding.java:349)
at oracle.adf.model.binding.DCIteratorBinding.setupRSIstate(DCIteratorBinding.java:867)
at oracle.adf.model.binding.DCIteratorBinding.refreshControlAndNotifyDCE(DCIteratorBinding.java:707)
at oracle.adf.model.binding.DCIteratorBinding.refreshControl(DCIteratorBinding.java:676)
at oracle.jbo.uicli.binding.JUIteratorBinding.refreshControl(JUIteratorBinding.java:485)
at oracle.adf.model.binding.DCIteratorBinding.refresh(DCIteratorBinding.java:4555)
at oracle.adf.model.binding.DCBindingContainer.refreshExecutables(DCBindingContainer.java:3542)
at oracle.adf.model.binding.DCBindingContainer.internalRefreshControl(DCBindingContainer.java:3375)
at oracle.adf.model.binding.DCBindingContainer.refreshControl(DCBindingContainer.java:2938)
at oracle.jbo.jbotester.NavigationBar.doInsertAction(NavigationBar.java:143)
at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:110)
at oracle.jbo.uicli.controls.JUNavigationBar$NavButton.actionPerformed(JUNavigationBar.java:118)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Please advice....
ThanksHi,
Just the exception stack without any information like what JDev version, what expression you've used for the default value of the transient attribute etc., is not enough for us to help you.
-Arun -
How to change sql expression of SQL-Calculated Attribute of view object ?
Hi
jdev 11.1.1.5
I have a view object with a SQL-Calculated Attribute (sumAnalytic) how can I change sql expression of this attribute in runtime?
for example in application module method??Hi Mr Timo
Thanks for your reply but I do not need dynamic vo because I can not change all of my vo
I only need to change expression of SQL-Calculated Attribute of view object in run time.
For this I set expression in view object something like this 'select 2 from dual' and in run time in my AM method I get the vo query and replace 'select 2 from dual' with something like 'selet sum(amnt) over (partition by 1)' and set new query.
But I think the better solution must exist
Thanks -
How to put validation between attributes at View Object level in BC4J
Hi,
Is it possible in BC4J to put validation between attributes at View Object level?
I know that I can do it at Entity Object level in validateEntity method, but I have several View Objects connected with one Entity Object and don't want to have the same validation logic for all View Objects.
Thanks for any help!It returns errorWhat error does it return?
John -
Dirty check for transient attributes in view object
Hi,
I am using JDeveloper 11.1.1.4 and ADF BC in my project.
In one of my view objects,I have a transient attribute added for some business logic.
I am doing dirty check in my project as below.
boolean dirty = false;
boolean amDirty = false;
// check application module
ApplicationModule am =
getBindingContainer().getDataControl().getApplicationModule();
amDirty = am.getTransaction().isDirty();
//Check if datacontrol is dirty
BindingContext bctx =
oracle.adf.controller.binding.BindingUtils.getBindingContext();
dirty =
bctx.findDataControlFrame(bctx.getCurrentDataControlFrame()).isTransactionDirty();
return amDirty || dirty;
My requirement is that,I dont want the dirty check to be applied on the transient attribute in the view object.
Is there any way to achieve this.Please advice...
Regards,
PraveenHi Frank,
Thanks for the suggestion.
I followed the link.But if a transient attribute is modified,then also ((ApplicationModule)getDataProvider()).getTransaction().isDirty() is returning true and the transaction is made dirty.
I am setting a transient attribute like this getNwOperVOIter().getCurrentRow().setAttribute("AcctNoTrans")....when I am editing a row.
Can I get explicit handle at viewobjectimpl for this transient attribute??
Regards,
Praveen -
How to populate transient attribute from view object dynamically
I have three 4 tables named as "employee,event,event_progress,and checklist progress". i have created a view object using the first three tables . i ahave also created 5 transient variables in to the same view object.when i dragged the view object in to my page as a table i want to populate those transient attribute.
i have 5 transient attribute which are present as a column value named as chechlist_name in another table "checklist".those all transient attribute also having two sub rows whose data should be populated from the checklist progress table.Hi
Please post your question on this forum, your question belong to this forum.
JDeveloper and ADF
Muhammad Nasir -
Deleting attributes in view objects...
I rewrote my query and now the attribute mappings are all wrong. The number of columns doesn't match the number of attributes. Other than laboriously editing the XML for the view object, is there an a way to get rid of all the view attributes and start as if it was a new VO? I tried selecting them in the wizard and structure pane to delete them, but this did not work. The xml file is protected in the XML editor.
Any help is appreciated.
UPDATE:
I figured it out. Never mind.
Message was edited by:
user530348Best is to Open VO with Wizard . Some times VO can be modify manually using XML files but this method are more error prone.
Hope your VO files got disturbed thats why you can edit with wizard.
If you have its backup copy then open with wizard.
Thanks -
How to define attributes at view object level ?
Hi,
I am defining one attribute at view level and also i am declare a bind variable.
eg: attribute name:days Bind variable: :Enter_The_Days
and In the days attribute-->(scheduledshippeddate-requestdate)
and In the where condition Days>:Enter_The_Days
But at the time of running the application module,It returns error. Can you please help me on tha.It returns errorWhat error does it return?
John -
[SOLVED] New attributes in View Object not visible in pageDef
Hi,
I'm having a View Object whererin I create new attributes. The problem is that the newly created attributes are not available for selection in a table binding in the page definition.
It seems like there is still somewhere a reference to the 'old' collection of attributes of the View Object. Is there a way to force an update?
The .xml file of the View seems to have the correct query containing the new attributes. Altough, when I try to edit the table binding in the pageDefinition, the attributes are not available in the 'Available Attributes' frame.
Thanks,
Koen Verhulst
edit: solved
Edited by: Koen Verhulst on Mar 5, 2009 8:47 AMHi Chetan,
I am now able to add a new tab after adding a new entry with the Main View name in "Assign Access levels to Incident Tabs" in transaction SPRO.
However, I am now facing a new issue when I add a main view in OIF component. There are 12 main views in the Object Instance Schema with ID's MainView<sequencenumber> as shown below.
But when I add a new main view I am getting the ID with the format MainVIew<sequencenumber_hexadecimalvalues> and also I am able to edit the ID value which is not enabled for other main views as shown below.
The problem with this hexadecimal value is that every time a change is done and I save the configuration, the number changes and this is causing problem as the configuration in SPRO does not match and the new tab becomes invisible.
Please could you let me know what could be the reason and how to rectify this?
Regards,
Poojith M V -
Uppercase Attributes in View Object
Hi
Any one help me please on BC4J View Object Attributes should display in Uppercase only. currently default is InitCap.
much appreciate your help.
Regards
SriniHi Frank,
Thanks for the suggestion.
I followed the link.But if a transient attribute is modified,then also ((ApplicationModule)getDataProvider()).getTransaction().isDirty() is returning true and the transaction is made dirty.
I am setting a transient attribute like this getNwOperVOIter().getCurrentRow().setAttribute("AcctNoTrans")....when I am editing a row.
Can I get explicit handle at viewobjectimpl for this transient attribute??
Regards,
Praveen -
Transient attribute in View Object
I need to create a transient attribute on a VO query based ,I need a transient attr with a string value ,then I used the JDEV wizard and keep Literal value option and put a value string in value box.
The problem is that when I drag and drop the relative property from DATA CONTROL to create an output text field , running all I don't see on web page the inserted value on VO, why ?
thanksIf you don't need to change this value then you can use Expression instead of Literal and put value under " ".
But, if you need to change this value, then you can:
- add something like this to your query: (select 'default_value' from dual) OR
- override createInstanceFromResultSet() in your ViewObjectImpl class and set default value to row OR
- if value of this transient object can't be null, use modified version of codigoadf approach:
public String getDummy() {
//return (String) getAttributeInternal(DUMMY);
return getAttributeInternal(DUMMY) == null ? "yourValue" : getAttributeInternal(DUMMY);
}Dario -
Error: oracle.jbo.NameClashException: JBO-25001:
Hi,
I am getting the error "JBO-25001: Name iterator of object type View Row Set Iterator already exist" when a button is clicked.
The scenario is as follows
A dialog page by invoking the OADialogPage class when a button (ArCmSubmit) is clicked. The following code in the controller is used for the same.
String SubmitBtn = oapagecontext.getParameter("ArCmSubmit");
String SubmitConfirm = oapagecontext.getParameter("OkButton");
if(SubmitBtn != null)
String messageText = oapagecontext.getMessage("WFSAPPS", "WFS_CMGT_CLOSE_CASE_FOLDER_MSG", null);
OAException mainMessage = new OAException(messageText);
OADialogPage dialogPage = new OADialogPage(OAException.WARNING, mainMessage, null, "", "");
dialogPage.setOkButtonLabel("Ok");
dialogPage.setNoButtonLabel("Cancel");
dialogPage.setOkButtonItemName("OkButton");
dialogPage.setNoButtonItemName("NoButton");
dialogPage.setOkButtonToPost(true);
dialogPage.setNoButtonToPost(true );
dialogPage.setPostToCallingPage(true);
dialogPage.setReuseMenu(false);
oapagecontext.redirectToDialogPage(dialogPage);
This works fine the first time when the Dialog page opens up as expected. Now after choosing "Ok" or "No" button the control goes back to the calling page. Now when the "ArCmSubmit" button is clicked the following error is received.
oracle.apps.fnd.framework.OAException: oracle.jbo.NameClashException: JBO-25001: Name iterator of object type View Row Set Iterator already exists
at oracle.apps.fnd.framework.webui.OAPageErrorHandler.prepareException(OAPageErrorHandler.java:1223)
at oracle.apps.fnd.framework.webui.OAPageErrorHandler.processErrors(OAPageErrorHandler.java:1408)
at oracle.apps.fnd.framework.webui.OAPageBean.processFormRequest(OAPageBean.java:2704)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1707)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:511)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:432)
at OA.jspService(OA.jsp:33)
at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:317)
at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:465)
at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:379)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:727)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:306)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:767)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:259)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:106)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:803)
at java.lang.Thread.run(Thread.java:534)
Any idea why this is happening ?Hiten,
I had the same problem but i was able to rectify this by using the following steps:
Possible Cases for your problem is:
Can you check whether are you using oracle.jbo.RowSetIterator to Iterate through the View Object Rows: Something like this:
oracle.jbo.RowSetIterator rowSetIter = vo.createRowSetIterator("pathIter");
If so after performing all the steps of iterating through the View Object then close the RowSetIterator using, rowSetIter.closeRowSetIterator();
or Can you check if you are creating two RowSetIterators with the same name ex:
oracle.jbo.RowSetIterator rowSetIter = vo.createRowSetIterator("pathIter");
oracle.jbo.RowSetIterator rowSetIter = vo.createRowSetIterator("pathIter");
Hope this helps
Regards,
Hari -
How to Use Transient View Objects to Store Session-level Global Variables
hi
Please consider section "40.8.5 How to Use Transient View Objects to Store Session-level Global Variables"
at http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcstatemgmt.htm#ADFFD19610
Based on this documentation I created the example application
at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.01.zip
It behaves as show in the screencast at http://screencast.com/t/qDvSQCgpvYdd
Its Application Module has a Transient View Object instance "MyEmployeesContextVOVI", as master for the child View Object instance "EmpInCtxJobVI".
On rollback the Transient View Object instance keeps its row and attribute values.
Also when passivation and activation is forced (using jbo.ampool.doampooling=false ) the Transient View Object instance seems to keep its row and attribute values.
questions:
- (q1) Why does the expression #{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty} evaluate as true when a Transient View Object instance attribute value is changed (as shown in screencast at http://screencast.com/t/qDvSQCgpvYdd )?
- (q2) What would be a robust approach to make a Transient View Object instance more self-contained, and manage itself to have only one single row (per instance) at all times (and as such removing the dependency on the Application Module prepareSession() as documented in "5. Create an empty row in the view object when a new user begins using the application module.")?
many thanks
Jan VerveckenThanks for your reply Frank.
q1) Does sample 90 help ? http://blogs.oracle.com/smuenchadf/examples/
Yes, the sample from Steve Muench does help, "90. Avoiding Dirtying the ADF Model Transaction When Transient Attributes are Set [10.1.3] "
at http://blogs.oracle.com/smuenchadf/examples/#90
It does point out a difference in marking transactions dirty by different layers of the framework, "... When any attribute's value is changed through an ADFM binding, the ADFM-layer transaction is marked as dirty. ...".
This can be illustrate with a small change in the example application
at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.02.zip
It now shows the result of both these expressions on the page ...
#{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty}
#{bindings.MyEmployeesContextVOVIIterator.dataControl.dataProvider.transaction.dirty}... where one can be true and the other false respectively.
See also the screencast at http://screencast.com/t/k8vgNqdKgD
Similar to the sample from Steve Muench, another modification to the example application introduces MyCustomADFBCDataControl
at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.03.zip
public class MyCustomADFBCDataControl
extends JUApplication
@Override
public void setTransactionModified()
ApplicationModule vApplicationModule = (ApplicationModule)getDataProvider();
Transaction vTransaction = vApplicationModule.getTransaction();
if (vTransaction.isDirty())
super.setTransactionModified();
}Resulting in what seems to be more consistent/expected transaction (dirty) information,
see also the screencast at http://screencast.com/t/756yCs1L1
Any feedback on why the ADF Model layer is so eager to mark a transaction dirty is always welcome.
Currently, question (q2) remains.
regards
Jan
Maybe you are looking for
-
Cannot connect to the itunes store on my iphone 4s, no error message just opens app and then closes
-
Read a text file from DB directly (don't use PLSQL).
how can I Read a text file from DB directly (don't use PLSQL). ?
-
Dear All, What is Adobe forms? What is Tcode & other help topics to create the Adobe form? Regards,
-
DB backup on local drive.
Hi All, Can we take database backup through DB13 t-code on local drive. if yes, kindly let me process... server status:---- windows 2003 EE Oracle 10g Thanks Gyan
-
Infotype 0002 record being created with language 'Z1' and not 'EN'
Approximately 50% of our Infotype 2 records exist with the language field value as 'Z1'. This wasn't captured manually, and our config is set up for 'EN'. Please advise how this could have occured.