Fetching multiple values from XML node
Hi,
I have the below XML string / Data stored in one of a table column. I am trying to extract the values of ITEM_NAME node. using the query :
select extractvalue(xml_data, '/BILL/BILL_DTL/RECORD/ITEM_NAME') from XMLTable;
If i use this query i am getting the error as : ORA-19025 EXTRACTVALUE returns value of only one node
XML String / XML data
<BILL>
.....<BILL_NO>1000</BILL_NO>
.....<SRNO>3456</SRNO>
.....<BILL_DTL>
........<RECORD>
...........<LINE_NO>1</LINE_NO>
...........<ITEM_NAME>TOYOTA COROLLA</ITEM_NAME>
........</RECORD>
........<RECORD>
..........<LINE_NO>2</LINE_NO>
..........<ITEM_NAME>NISSAN CEDRIC</ITEM_NAME>
.......</RECORD>
.....</BILL_DTL>
</BILL>
The structure of the table is given below.
SQL> DESC XMLTABLE;
Column_Name ---------------Type
DOC_ID -------------------------NUMBER
XML_DATA --------------------XMLTYPE
What will be the query to fetch the values from the ITEM_NAME node.
Thanks & Regards
A late answer but just to show that it can be done with XMLTable (the built-in Oracle function) when you expect to return multiple rows from one input.
WITH XMLTable AS
(SELECT XMLTYPE('<BILL>
<BILL_NO>1000</BILL_NO>
<SRNO>3456</SRNO>
<BILL_DTL>
<RECORD>
<LINE_NO>1</LINE_NO>
<ITEM_NAME>TOYOTA COROLLA</ITEM_NAME>
</RECORD>
<RECORD>
<LINE_NO>2</LINE_NO>
<ITEM_NAME>NISSAN CEDRIC</ITEM_NAME>
</RECORD>
</BILL_DTL>
</BILL>') xml_data
FROM dual
SELECT item_name
FROM XMLTable,
XMLTable('/BILL/BILL_DTL/RECORD'
PASSING xml_data
COLUMNS
item_name VARCHAR2(25) PATH 'ITEM_NAME'
Returns
ITEM_NAME
TOYOTA COROLLA
NISSAN CEDRIC
Similar Messages
-
XML parser for fatching multiple values from XML
Hi,
In my scenirio i have to facth multiple values from XML file and then set in to Table in webdynpro...
Fo example my xml has values like...
<xml>
<item>
<item1>
<quantity>
100
</quantity>
<price>
50
</price>
</item1>
<item2>
<quantity>
200
</quantity>
<price>
20
</price>
</item2>
<item3>
<quantity>
300
</quantity>
<price>
10
</price>
</item3>
</item>
</xml>
then i have to fcath those quantity and price and set in to table...
How to do taht in webdynpro and does any one have parser code for retriving multiple values...Hi,
1) You need to use JDOM parser.
2) The code for parsing XML using JDOM parser is readily available if you search on google.
3) You will have to check the attribute during every parsing and then if attribute is quantity you can fetch the corresponding tags.
4) Something similar to this:
org.jdom.Document document = parser.build(file);
org.jdom.Element rootElement = document.getRootElement();
org.jdom.Element childElement = rootElement.getChild("file");
Element xmlElement = childElement.getChild("item");
if (xmlElement != null) {
List itemElementsList = xmlElement.getChildren("item1");
if (itemElementsList != null) {
Iterator iterator3 = itemElementsList.iterator();
while (iterator3.hasNext()) {
//For each group get quantity
Element itemElement = (Element) iterator3.next();
List quantityElementsList =
itemElement.getChildren("quantity");
if (quantityElementsList != null) {
Iterator iterator2 =
quantityElementsList.iterator();
while (iterator2.hasNext()) {
// Your code
You might need to make some changes as per your rquirement. Just use this sample to understand how you need to parse the xml
Hope it helps.
Regards.
Rajat
Edited by: Rajat Jain on Jan 22, 2009 9:51 AM -
[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 pages 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>Thats 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 dont 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.
Im not going to take the time out to explain these 3 points, but its 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 -
Problem fetching multiple values in a TIMESTAMP column
Hi all,
I'm having a problem trying to fetch multiple values in a TIMESTAMP column. I can successfully fetch the TIMESTAMP column if I do the following:
OCIDateTime tstmpltz = (OCIDateTime )NULL;
rc = OCIDescriptorAlloc(p_env,(dvoid **)&tstmpltz, OCI_DTYPE_TIMESTAMP,
0, (dvoid **)0);
rc = OCIDefineByPos(p_sql, &p_dfn, p_err, 1, &tstmpltz, sizeof(tstmpltz),
SQLT_TIMESTAMP, 0, 0, 0, OCI_DEFAULT);
This works fine. I can then do what I want with the OCIDateTime variable tstmpltz, like convert it to a text string, etc.
But what I am trying to do is fetch many rows of data that could include a TIMESTAMP column. For character columns this is no problem. I simply allocate a buffer of the correct width and length and then do my OCIDefineByPos to point to the start and the character data gets filled in. Same for numeric columns as well.
I can do this with a TIMESTAMP column if I do the OCIDefineByPos with a column type of SQLT_CHR. But the problem I'm running into when I do things this way is if I fetch a Timestamp value that is before 1950 I believe it is, I get back the wrong century. So for instance 1900 comes back as 2000. I think this is because the default date format when fetching is a 2 digit year. So I've tried to the do following:
long fetchrows = 50;
unsigned char *descpp1;
descpp1 = (unsigned char *)calloc(fetchrows, sizeof (OCIDateTime *));
int i;
for (i = 0; i != fetchrows; i++)
/* Allocate descriptors */
rc = OCIDescriptorAlloc((void *)p_env,(void **)&descpp1[i * sizeof (OCIDateTime *)], OCI_DTYPE_TIMESTAMP,
0,(void **)0);
// Bind the column
rc = OCIDefineByPos(p_sql, &p_dfn, p_err, 1, descpp1, sizeof(descpp1),
SQLT_TIMESTAMP, 0, 0, 0, OCI_DEFAULT);
rc = OCIStmtExecute(p_svc, p_sql, p_err, (ub4) 50, (ub4) 0,
(CONST OCISnapshot *) NULL, (OCISnapshot *) NULL,
OCI_DEFAULT);
And I get an "ORA-01403: no data found" error. I'm missing something here but I can't figure out what it is. Is this proper way to fetch multiple Timestamp columns ?
Thanks,
NickHi Nick,
I think the "trick" here is that when you call OCIDescriptorAlloc normally you would pass a pointer to an OCIDateTime pointer (i.e. OCIDateTime**). However, you're being sneaky here and using unsigned char * with malloc/calloc for the reasons you have already mentioned. So, that changes things a bit because in this scenario the "destination address" where OCI is going to put the address for the OCIDateTime descriptor is in the memory you have dynamically allocated rather than in the target pointer of an OCIDateTime** declaration. So far so good, but the problem, as you've discovered, comes about when you need to get the OCIDateTime* to pass into the OCIDateTimeToText function. In your call you have this:
(OCIDateTime *)descpp1[0 * sizeof (OCIDateTime *)]However, that isn't the address of the descriptor it's a pointer to the address so, depending on your actual calls, etc. you'll either get a memory violation or an invalid OCI handle error. What you can do is get the address from that memory location and stuff it into a proper OCIDateTime* and then it can be used in the OCIDateTimeToText function.
I'm probably doing a terrible job explaining it, but I have cobbled together a sample which does what you want (at least as far as I can tell). Of course, being OCI, there's a fair bit of code, but here's the main parts.
I created a table called "ts_test" that has the following structure and sample data:
SQL> desc ts_test
Name Null? Type
TS_ID NUMBER
TS_VALUE TIMESTAMP(3)
SQL> select * from ts_test order by ts_id;
TS_ID TS_VALUE
1 01-JAN-09 08.00.00.123 AM
2 01-JAN-09 12.34.56.789 PM
3 01-JAN-09 04.46.00.046 PM
4 01-JAN-09 10.00.00.314 PM
4 rows selected.I use the same query as above in the OCI sample code to get the values back out of the table.
** will hold pointers to TimeStamp Descriptor memory
unsigned char *pTSD = (unsigned char *) NULL;
** temp pointer used with descriptors
OCIDateTime *pTemp = NULL;
** allocate memory for the ts_id column
if ((pID_val = (ub4 *) malloc(sizeof(ub4) * arrsize)) == NULL)
printf("Failed to allocate memory for pID_val!\n");
return;
** allocate memory for the ts descriptors
if ((pTSD = (unsigned char *) malloc(sizeof(unsigned char *) * arrsize)) == NULL)
printf("Failed to allocate memory for pTSD!\n");
return;
** allocate date time descriptors
for (i = 0; i < arrsize; i++)
rc = OCIDescriptorAlloc(pDBCtx->envhp,
(void **) &pTSD[i * sizeof(OCIDateTime *)],
(ub4) OCI_DTYPE_TIMESTAMP,
(size_t) 0,
(void **) 0);
** define the first column in the results
rc = OCIDefineByPos(stmtp,
&defnp,
pDBCtx->errhp,
(ub4) 1,
(void *) pID_val,
(sword) sizeof(ub4),
(ub2) SQLT_INT,
(void *) pID_ind,
(ub2 *) 0,
(ub2 *) 0,
(ub4) OCI_DEFAULT);
** define the second column in the results
rc = OCIDefineByPos(stmtp,
&defnp,
pDBCtx->errhp,
(ub4) 2,
(void *) &pTSD[0],
(sword) sizeof(OCIDateTime *),
(ub2) SQLT_TIMESTAMP,
(void *) pTS_ind,
(ub2 *) 0,
(ub2 *) 0,
(ub4) OCI_DEFAULT);
** execute the statement
rc = OCIStmtExecute(pDBCtx->svchp,
stmtp,
pDBCtx->errhp,
(ub4) arrsize,
(ub4) 0,
(CONST OCISnapshot *) NULL,
(OCISnapshot *) NULL,
(ub4) OCI_DEFAULT);
** get the text value of the timestamp
** null-terminate it, and display the value.
** the address of the allocated descriptor
** is copied from the dynamically allocated
** memory to the temp variable and that
** is passed to OCIDateTimeToText
for (i = 0; i < arrsize; i++)
memcpy((void *) &pTemp, &pTSD[i * sizeof(OCIDateTime *)], sizeof(OCIDateTime *));
rc = OCIDateTimeToText((void *) pDBCtx->usrhp,
pDBCtx->errhp,
pTemp,
(oratext *) 0,
(ub1) 0,
(ub1) 3,
(oratext *) 0,
(size_t) 0,
&buflen,
buf);
buf[buflen] = '\0';
printf("Timestamp value[%d]: %s\n", *pID_val++, buf);
...Obviously there's lots left out, but hopefully that can be of some help. I've not really thoroughly reviewed the code so there may be a few things to fix. Anyway, using the above table and data the full sample outputs this on my system:
Timestamp value[1]: 01-JAN-09 08.00.00.123 AM
Timestamp value[2]: 01-JAN-09 12.34.56.789 PM
Timestamp value[3]: 01-JAN-09 04.46.00.046 PM
Timestamp value[4]: 01-JAN-09 10.00.00.314 PM
ENTER to continue...Thanks,
Mark -
Want to retrieve null value from xml?
i m writing this code to get the tag name and values from xml file.
Now the problem is that
if my xml file contain any tag whose value is not defined like
<root>
<firsttag>first</firsttag>
<Second></Second><Third>third</Third>
</root>
Now look if second tag doesnt contain anything ,then i want to add "null" to vector,but it throws null pointer exception because second tag is empty.
Vector<String> CSWFinfo = new Vector<String>();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File(xml));
Element root = doc.getDocumentElement();
NodeList node = root.getChildNodes();
for (int i = 0; i < node.getLength(); i++) {
Node currentNode = node.item(i);
if (isTextNode(currentNode))
continue;
CSWFinfo.addElement(currentNode.getNodeName());
if (null != currentNode.getFirstChild().getNodeValue()) {
CSWFinfo.addElement(currentNode.getFirstChild()
.getNodeValue());
} else {
CSWFinfo.addElement("null");
}//end of for loop block
System.out.println(CSWFinfo);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}I am using dom parser .
Can any one know how to do it????
Edited by: chauhan2003 on 16 Jun, 2008 12:06 PMAre you sure that all currentNode have a firstChild ????
If your node has no value, it has no child
So i 'd change code to like look something like:
if (currentNode.getFirstChild() != null) {
CSWFinfo.addElement(currentNode.getFirstChild().getNodeValue());
} else {
CSWFinfo.addElement("null");
} -
How to get multiple values from the list
I've a list of an item which I queried it from the database. I also created a button that will takes a selected items from the list when it was clicked. I used javabean to get the data from database.
<% // clicked on Select District Button
Vector vselectedDistrict = new Vector();
Vector vdistrictID = new Vector();
String tmpSelectDistrict = "";
tmpSelectDistrict = request.getParameter("bSelectDistrict");
if(tmpSelectDistrict != null)
// get multiple values from the list
String[] selectedDistrict = request.getParameterValues("usrTDistrict");
vselectedDistrict.clear();
vdistrictID.clear();
if((selectedDistrict != null) && (selectedDistrict.length != 0))
for(int i=0;i<selectedDistrict.length;i++)
vselectedDistrict.addElement(selectedDistrict);
vdistrictID = dbaseInfo.getcurrentDistrictID(nstate,vselectedDistrict);
for(int i=0;i<vdistrictID.size();i++)
out.println("district = " + selectedDistrict[i]); out.println("district ID= " + vdistrictID.get(i).toString());
%>
// get vdistrict from the database here......
<select name="usrTDistrict" size="5" multiple>
<% for(int i = 0; i< vdistrict.size(); i++)
%>
<option value="<%=vdistrict.get(i).toString()%>"><%=vdistrict.get(i).toString()%></option>
<%
%>
</select>
<input type="submit" name="bSelectDistrict" value="Select District">
Lets say the item that i selected from the list is 'Xplace' and I clicked on the Select District button,
what I got is this error message:
org.apache.jasper.JasperException: Unable to convert string 'Xplace' to class java.util.Vector for attribute usrTDistrict: java.lang.IllegalArgumentException: Property Editor not registered with the PropertyEditorManager
So where is going wrong and what the message means?. Any help very much appreciated. ThanksThese are just guesses that might hopefully steer you in directions you haven't looked in yet.
I presume you used triangle brackets (< >) to avoid having the Jive Forum think it was the "italics" tag?
Are you certain this: dbaseInfo.getcurrentDistrictID(nstate,vselectedDistrict);
expects a Vector as its second parameter? And returns a Vector?
I don't believe you've shown how you use the javabean, or its code? Perhaps it should be rewritten to accept an array of strings instead of a Vector? -
From two given tables, how do you fetch the values from two columns using values from one column(get values from col.A if col.A is not null and get values from col.B if col.A is null)?
Hi,
Use NVL or COALESCE:
NVL (col_a, col_b)
Returns col_a if col_a is not NULL; otherwise, it returns col_b.
Col_a and col_b must have similar (if not identical) datatypes; for example, if col_a is a DATE, then col_b can be another DATE or it can be a TIMESTAMP, but it can't be a VARCHAR2.
For more about NVL and COALESCE, see the SQL Language manual: http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions119.htm#sthref1310
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all tables involved, and also post the results you want from that data.
Explain, using specific examples, how you get those results from that data.
Always say which version of Oracle you're using (e.g., 11.2.0.2.0).
See the forum FAQ: https://forums.oracle.com/message/9362002 -
How to get string value from xml in JSF??
In JSF How to get string value from xml, .ini and properties file. I want to get string value from xml or text to JSF
Just use the appropriate API's for that. There are enough API's out which can read/parse/write XML, ini and properties files. E.g. JAXP or DOM4J for xml files, INI4J for ini files and Sun's own java.util.Properties for propertiesfiles.
JSF supports properties files as message bundle and resource bundle so that you can use them for error messages and/or localization. -
Selecting multiple values from a search help
Hi Experts
Anyone knows if it is possible to select multiple values from a search help?
Thanks
GauravHi,
You cannot select mutiple values from search help as it is linked to inputfield and hence it will accept single value only. But at the same time, you may able to pass row of values to different inputfields.
Refer http://help.sap.com/saphelp_dm40/helpdata/en/3d/e53642e2a3ab04e10000000a1550b0/content.htm
Thanks,
Chandra -
How to select multiple values from a listbox
Hi,
I have a list box on my UI which is not allowing me to select multiple values
I want to use multi select list box .. When i go to source of UI component and change that to select many listbox my page is not rendering it is giving error
When i drag & drop the component i am unable to drop it as a multi select list box that option is not coming.
I am working on Jdev 11.1.1.3 and I am using ADF/BC components
How to select multiple values from a listbox ?
Thanks,Hi,
I want to use multi select list box .. When i go to source of UI component and change that to select many listbox my page is not rendering it is giving errorank
And what is the error ?
Frank -
Multiple values from a sequence ?
Hi all,
how can i guarantee that a user gets multiple values from a sequence in a row? (for example : 100, 101 ,102, 103)
It should not happened that another user gets a sequence value such as 102.
Can i solve this with sequences or do i need a table?
thanksWhy would you want to do this? The easiest way of implementing it is through a code control table, which can be locked by user 1. However, this is only easy for you, not for your users. Consider: user 2 cannot do their work until user 1 commits. Note that if user 1 inserts three records (101, 102, 103) and then commits, user 2 can grab 104. User 1 can't insert any more records until user 2 commits. At which point user 1 can have 105.
If you really have a business need for such a palaver then you ought to implement it through user-owned objects - sequences or tables - with each user assigned a unique range e.g. user 1 gets 101 to 150, user 2 gets 151 to 200. When a user exhausts their range give them a new chunk. This is an admin overhead and it also means that you can no longer guarantee that ID 157 is more recent than 133.
To repeat: why do you want to do this?
Rgds, APC -
Fetch the values from internal table inside an internal table (urgent!!)
data : BEGIN OF PITB2_ZLINFO occurs 0,
BEGDA LIKE SY-DATUM,
ENDDA LIKE SY-DATUM,
PABRJ(4) TYPE N, "Payroll Year
PABRP(2) TYPE N, "Pay. Period
ZL LIKE PC2BF OCCURS 0,
END OF PITB2_ZLINFO.
I have a internal table like this,
How to Fetch the values from internal table inside an internal table.
Kindly Help me on this..
Regards,
Ram.Hi,
Try this....
Loop at PITB2_ZLINF0.
Loop at PITB2_ZLINF0-ZL.
endloop.
Endloop.
Thanks...
Preetham S -
How to return multiple values from dialog popup
hi all
I'm using ADF 10g. I have a requirement that I have to return multiple values from a dialog.
I have a page containing a table with a button which calls the dialog. The dialog contains a multi-select table where i want to select multiple records and add them to the table in the calling page.
In the backing bean of the calling page, I have the returnListener method.
I am thinking that I have to store the selected rows from dialog in an array and return that array to the returnListener...but I don't know how to go about it with the code.
Can someone help me out with it?
thanksHi Frank,
I'm trying to implement your suggestion but getting comfused.
AdfFacesContext.getCurrentInstance().returnFromDialog(null, hashMap) is called in ActionListener method, from what I understood.
ReturnListener method already calls it, so no need to call explicitly.
Okay here's what i'm doing.
command button launches the dialog on the calling page.
In the dialog page, there is a button "select", which when i click, closes the dialog and returns to calling page. I put a af:returnActionListener on this button, which logically should have a corresponding ReturnListener() in the calling page backing bean.
Now I have 3 questions:
1. do i have to use ActionListener or ReturnListener?
2. where do I create the hashMap? Is it in the backing bean of the dialog or in the one of calling page?
3. how do I retrieve the keys n values from hashmap?
please help! thanks
This is found in the backing bean of calling page:
package mu.gcc.dms.view.bean.backing;
import com.sun.java.util.collections.ArrayList;
import com.sun.java.util.collections.HashMap;
import com.sun.java.util.collections.List;
import java.io.IOException;
import java.util.Map;
import javax.faces.application.Application;
import javax.faces.application.ViewHandler;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.event.ActionEvent;
import mu.gcc.dms.model.services.DMSServiceImpl;
import mu.gcc.dms.model.views.SiteCompaniesImpl;
import mu.gcc.dms.model.views.SiteCompaniesRowImpl;
import mu.gcc.dms.model.views.lookup.LkpGlobalCompaniesImpl;
import mu.gcc.util.ADFUtils;
import mu.gcc.util.JSFUtils;
import oracle.adf.model.BindingContext;
import oracle.adf.model.binding.DCBindingContainer;
import oracle.adf.model.binding.DCIteratorBinding;
import oracle.adf.view.faces.context.AdfFacesContext;
import oracle.adf.view.faces.event.ReturnEvent;
import oracle.adf.view.faces.model.RowKeySet;
import oracle.binding.AttributeBinding;
import oracle.binding.BindingContainer;
import oracle.binding.OperationBinding;
import oracle.jbo.AttributeDef;
import oracle.jbo.Key;
import oracle.jbo.Row;
import oracle.jbo.RowIterator;
import oracle.jbo.RowSetIterator;
import oracle.jbo.domain.Number;
import oracle.jbo.server.java.util.Iterator;
public class CompanyList {
private BindingContainer bindings;
private Map hashMap;
DMSServiceImpl service =(DMSServiceImpl)ADFUtils.getDataControlApplicationModule("DMSServiceDataControl");
SiteCompaniesImpl siteCompanyList = service.getSiteCompanies();
LkpGlobalCompaniesImpl globalCompanyList = service.getLkpGlobalCompanies();
public CompanyList() {
public BindingContainer getBindings() {
return this.bindings;
public void setBindings(BindingContainer bindings) {
this.bindings = bindings;
*public void setHashMap(Map hashMap) {*
*// hashMap = (Map)new HashMap();*
this.hashMap = hashMap;
*public Map getHashMap() {*
return hashMap;
public String searchCompanyButton_action() {
BindingContainer bindings = getBindings();
OperationBinding operationBinding =
bindings.getOperationBinding("Execute");
Object result = operationBinding.execute();
if (!operationBinding.getErrors().isEmpty()) {
return null;
return null;
*public void addCompanyActionListener(ActionEvent actionEvent){*
AdfFacesContext.getCurrentInstance().returnFromDialog(null, hashMap);
public void addCompanyReturnListener(ReturnEvent returnEvent){
//how to get hashmap from here??
public String addCompanyButton_action() {
return "dialog:globalLovCompanies";
} -
How to pass multiple values from workbook to planning function ?
Hi,
I have created Planning function in Modeler and it has one parameter(Variable represents = Multiple single values).
When executing the planning function by create planning seq. in the web template : I see value of variable store data like ...
A.) input one value -> V1
B.) input three values -> V1;V2;V3
This function execute completely in web.
However, I want to use the planning function in workbook(Excel).
The value of variable can't input V1;V2;V3... I don't know how to pass multiple values from workbook to parameter(Multiple single values type) in planning function ?
thank you.Hi,
Please see the attached how to document (page no 16).
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f0881371-78a1-2910-f0b8-af3e184929be">how to</a>
Hope this was helpful
thanks -
How to select multiple values from the parameters in BI Publisher report
How to select multiple values from the parameter drop down in BI Publisher, and how to handle this mulitple values from the report sql...
Hi kishore,
I have used all the steps as you mentioned in your previous reply....including checking Mulitple Selection Check Box..
Iam able to get the results when I am selecting one value..
and also I am able to handle multiple values the in the query by using IN :Parameter, but seems when we select more than one value from the parameter drop down i think the Bi Publisher is sending the values in concatenated form something ilke
ex: "'ACCOUNT','HR','SALES'" ,and when trying to display the parameters values in the output, its throwing the error as 'missing right paranthesis' ....on the whole do you have any solution which would handle
1.Single selection.
2.Multiple selection.
3.'ALL' Values.
4.Separating the concatenated string into individual strings and dispaly them on the output of the report..etc..in case of Mulitple selection.
Ex:
Concatenated String from BI Publisher:"'ACCOUNT','HR','SALES'"
Expected Output on the report:ACCOUNT,HR,SALES
reply to this would be much appreciated....
thanks,
manoj
Maybe you are looking for
-
Return from customer movement type
Hello, We use in our system 653 mov.type when we return goods from customer. Usually we create the return order with reference to the original customer order and the original customer order is MTO (make to order) . When posting the 653 mov.type the s
-
WRT160N will not connect to internet unless xbox live is on
Hello, I am hoping someone here will be able to help me (countless customer service calls never helped). I bought this router less than a year ago and have always had the same problem. The only time I can connect to the internet through the router is
-
I recently upgraded to ML and now I find that CS5.5 programs crash unexpectedly all the time. Is anyone else having this issue and what's the best way to resolve this. Help.
-
Upload documents in background
Hi gurus, I need to upload documents in background. Is there anyboby who could explain which function I have to use and how I can do to tranfer a zip file in a folder (competitive scenario). ...I must create a collaborative area after BID creation an
-
"Player update service 11.6 r602 stopped working and was closed" box keeps re-apearing
I have un-installed and re-installed several times, also followed lenghty tutorials on the internet to completely remove Flash player before re-installing, I still get the message box popping up several times in an hour or so, sometimes it does not s