Multiple Value Listeners Firing Simultaneously

I am trying to make a columnar navigation model for a web app using JSF. The idea is to model the Mac OS "Finder" interface, wherein a top level directory is displayed in the first column, and then clicking on an item will fill the next column with the items contained within it, and so on through n number of columns/directories. The problem I am having is that upon clicking on an item in the top view column, all of the event listeners for the other columns fire at the same time, even though each column has it's own listener. Although the listeners all fire at once, each is triggered by the parent column changing values. Is there any way to force this "cascading" effect to stop?
***************************JSP Page**********************************
<?xml version="1.0"?>
<jsp:root version="1.2" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<f:view>
<html>
<head>
<title>home Title</title>
<link href="_styles/main.css" rel="stylesheet" type="text/css"/>
<link href="_styles/home.css" rel="stylesheet" type="text/css"/>
<script>
<jsp:include page="_js/rollover.js"/>
</script>
</head>
<body onLoad="MM_preloadImages('_images/home/add_group_f2.gif','_images/home/del_group_f2.gif')" rave-layout="flow">
<h:form binding="#{home.homeForm}" id="homeForm">
<div align="center">
<table border="0" cellpadding="0" cellspacing="0" width="99%">
<tr>
<td>
<img height="10" src="_images/common/spacer.gif" width="28"/>
</td>
</tr>
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr align="left" valign="top">
<td height="33px" valign="bottom" width="28px">
<img height="7px" src="_images/common/Frame1_angleLeft1.gif" width="28px"/>
</td>
<td background="_images/common/Frame1_topFill.jpg" height="33" width="1125">
<img height="26" id="title" name="title" src="_images/home/title_groupManager.gif" width="209"/>
</td>
<td align="right" background="_images/common/Frame1_topFill.jpg" class="prodMonth" nowrap="true"
width="250">PRODUCTION
MONTH: <span class="prodMonth1">MAY 2004</span>
</td>
<td align="right" background="_images/common/Frame1_topFill.jpg" height="33" width="25">
<img height="33" src="_images/common/Frame1_topRight.jpg" width="25"/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" bgcolor="#FFFFFF" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr align="left" valign="top">
<td width="29px">
<img height="22px" src="_images/common/Frame1_angleLeft.gif" width="29px"/>
</td>
<td width="100%"/>
<td align="right" background="_images/common/Frame1_leftFill.jpg" width="25px">
<img height="6px" src="_images/common/Frame1_leftFill.jpg" width="25px"/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" bgcolor="#FFFFFF" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr align="left" valign="top">
<td bgcolor="#BFC0C2" width="8">
<img height="8" src="_images/common/spacer.gif" width="8"/>
</td>
<td width="154">
<p>
<img border="0" height="58" id="TopLevel01" name="TopLevel01" src="_images/home/TopLevel01.jpg" width="154"/>
<img border="0" height="58" id="TopLevel02" name="TopLevel02" src="_images/home/TopLevel02.jpg" width="154"/>
<img border="0" height="58" id="TopLevel03" name="TopLevel03" src="_images/home/TopLevel03.jpg" width="154"/>
</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td width="100">
<img height="25" id="myGroup" name="myGroup" src="_images/home/title_myGroup.gif" width="100"/>
</td>
<td width="24">
<img border="0" height="25" id="add_group" name="add_group" src="_images/home/add_group.gif" width="24"/>
</td>
<td width="24">
<img border="0" height="25" id="del_group" name="del_group" src="_images/home/del_group.gif" width="24"/>
</td>
</tr>
</table>
<p>
<img height="20" id="group_ico" name="group_ico" src="_images/home/group_ico.gif" width="20"/>
</p>
<p/>
</td>
<td bgcolor="#BFC0C2" width="4"/>
<td>
<table border="0" cellpadding="0" cellspacing="0" id="navTable">
<tr>
<td align="left">
<h:selectManyListbox accesskey="1" binding="#{home.topView}" id="topView" immediate="true"
onclick="" ondblclick="submit()"
style="background-color: white; border-bottom-color: rgb(255, 255, 255); border-style: hidden; border-spacing: 0; border-collapse: collapse; width: 150px; height: 300px">
<f:selectItems binding="#{home.multiSelectListbox1SelectItems}"
id="multiSelectListbox1SelectItems" value="#{home.topViewItems}"/>
</h:selectManyListbox>
</td>
<td align="left">
<h:selectManyListbox accesskey="2" binding="#{home.secondView}" id="secondView" immediate="true"
onclick="" ondblclick="submit()" style="background-color: white; border-bottom-color: rgb(255, 255, 255); border-style: hidden; border-spacing: 0; border-collapse: collapse; width: 150px; height: 300px">
<f:selectItems binding="#{home.multiSelectListbox2SelectItems}"
id="multiSelectListbox2SelectItems" value="#{home.secondViewItems}"/>
</h:selectManyListbox>
</td>
<td align="left">
<h:selectManyListbox accesskey="3" binding="#{home.thirdView}" id="thirdView" immediate="true"
onclick="" ondblclick="submit()" style="background-color: white; border-bottom-color: rgb(255, 255, 255); border-style: hidden; border-spacing: 0; border-collapse: collapse; width: 150px; height: 300px">
<f:selectItems binding="#{home.multiSelectListbox3SelectItems}"
id="multiSelectListbox3SelectItems" value="#{home.thirdViewItems}"/>
</h:selectManyListbox>
</td>
<td align="left">
<h:selectManyListbox accesskey="4" binding="#{home.fourthView}" id="fourthView" immediate="true"
onclick="" ondblclick="submit()" style="background-color: white; border-bottom-color: rgb(255, 255, 255); border-style: hidden; border-spacing: 0; border-collapse: collapse; width: 150px; height: 300px">
<f:selectItems binding="#{home.multiSelectListbox4SelectItems}"
id="multiSelectListbox4SelectItems" value="#{home.fourthViewItems}"/>
</h:selectManyListbox>
</td>
<td align="left">
<h:selectManyListbox accesskey="5" binding="#{home.fifthView}" id="fifthView" onclick=""
ondblclick="submit()" style="background-color: white; border-bottom-color: rgb(255, 255, 255); border-style: hidden; border-spacing: 0; border-collapse: collapse; width: 150px; height: 300px">
<f:selectItems binding="#{home.multiSelectListbox5SelectItems}"
id="multiSelectListbox5SelectItems" value="#{home.fifthViewItems}"/>
</h:selectManyListbox>
</td>
</tr>
</table>
</td>
<td align="right" background="_images/common/Frame1_leftFill.jpg" width="25">
<img height="6" src="_images/common/Frame1_leftFill.jpg" width="25"/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" bgcolor="#FFFFFF" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr align="left" valign="top">
<td width="29">
<img height="24" src="_images/common/Frame1_bottomLeft.jpg" width="29"/>
</td>
<td background="_images/common/Frame1_bottomFill.jpg">
<img height="24" src="_images/common/Frame1_bottomFill.jpg" width="5"/>
</td>
<td align="right" width="25">
<img height="24" src="_images/common/Frame1_bottomRight.jpg" width="25"/>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<h:outputText binding="#{home.outputText1}" id="outputText1" value=""/>
</h:form>
</body>
</html>
</f:view>
</jsp:root>
******************Backing bean Code File*************************
package Backing;
import javax.faces.*;
import com.sun.jsfcl.app.*;
import javax.faces.component.html.*;
import com.sun.jsfcl.std.*;
import javax.faces.component.*;
import com.sun.jsfcl.std.table.*;
import javax.faces.model.SelectItem;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeListener;
import javax.faces.event.PhaseId;
* Creator-managed class.
* Your code should be placed at the end.
public class home extends AbstractPageBean {
//Attributes
private HtmlForm homeForm = new HtmlForm();
private DefaultSelectItemsArray multiSelectListbox1DefaultItems = new DefaultSelectItemsArray();
private DefaultSelectItemsArray multiSelectListbox3DefaultItems = new DefaultSelectItemsArray();
private DefaultSelectItemsArray multiSelectListbox4DefaultItems = new DefaultSelectItemsArray();
private DefaultSelectItemsArray multiSelectListbox5DefaultItems = new DefaultSelectItemsArray();
private UISelectItems multiSelectListbox1SelectItems = new UISelectItems();
private UISelectItems multiSelectListbox2SelectItems = new UISelectItems();
private UISelectItems multiSelectListbox3SelectItems = new UISelectItems();
private UISelectItems multiSelectListbox4SelectItems = new UISelectItems();
private UISelectItems multiSelectListbox5SelectItems = new UISelectItems();
private HtmlSelectManyListbox topView = new HtmlSelectManyListbox();
private HtmlSelectManyListbox secondView = new HtmlSelectManyListbox();
private HtmlSelectManyListbox thirdView = new HtmlSelectManyListbox();
private HtmlSelectManyListbox fourthView = new HtmlSelectManyListbox();
private HtmlSelectManyListbox fifthView = new HtmlSelectManyListbox();
private SelectItem[] topViewItems;
private SelectItem[] secondViewItems;
private SelectItem[] fourthViewItems;
private SelectItem[] fifthViewItems;
private SelectItem[] thirdViewItems;
//Accessors
public HtmlForm getHomeForm() {
return homeForm;
public DefaultSelectItemsArray getMultiSelectListbox1DefaultItems() {
return multiSelectListbox1DefaultItems;
public DefaultSelectItemsArray getMultiSelectListbox3DefaultItems() {
return multiSelectListbox3DefaultItems;
public DefaultSelectItemsArray getMultiSelectListbox4DefaultItems() {
return multiSelectListbox4DefaultItems;
public DefaultSelectItemsArray getMultiSelectListbox5DefaultItems() {
return multiSelectListbox5DefaultItems;
public UISelectItems getMultiSelectListbox1SelectItems() {
return multiSelectListbox1SelectItems;
public UISelectItems getMultiSelectListbox2SelectItems() {
return multiSelectListbox2SelectItems;
public UISelectItems getMultiSelectListbox3SelectItems() {
return multiSelectListbox3SelectItems;
public UISelectItems getMultiSelectListbox4SelectItems() {
return multiSelectListbox4SelectItems;
public UISelectItems getMultiSelectListbox5SelectItems() {
return multiSelectListbox5SelectItems;
public HtmlSelectManyListbox getTopView() {
return topView;
public HtmlSelectManyListbox getSecondView() {
return secondView;
public HtmlSelectManyListbox getThirdView() {
return thirdView;
public HtmlSelectManyListbox getFourthView() {
return fourthView;
public HtmlSelectManyListbox getFifthView() {
return fifthView;
public SelectItem[] getTopViewItems(){
return this.topViewItems;
public SelectItem[] getSecondViewItems(){
return this.secondViewItems;
public SelectItem[] getThirdViewItems(){
return this.thirdViewItems;
public SelectItem[] getFourthViewItems(){
return this.fourthViewItems;
public SelectItem[] getFifthViewItems(){
return this.fifthViewItems;
//Modifiers
public void setHomeForm(HtmlForm hf) {
this.homeForm = hf;
public void setMultiSelectListbox1DefaultItems(DefaultSelectItemsArray dsia) {
this.multiSelectListbox1DefaultItems = dsia;
public void setMultiSelectListbox3DefaultItems(DefaultSelectItemsArray dsia) {
this.multiSelectListbox3DefaultItems = dsia;
public void setMultiSelectListbox4DefaultItems(DefaultSelectItemsArray dsia) {
this.multiSelectListbox4DefaultItems = dsia;
public void setMultiSelectListbox5DefaultItems(DefaultSelectItemsArray dsia) {
this.multiSelectListbox5DefaultItems = dsia;
public void setMultiSelectListbox1SelectItems(UISelectItems uisi) {
this.multiSelectListbox1SelectItems = uisi;
public void setMultiSelectListbox2SelectItems(UISelectItems uisi) {
this.multiSelectListbox2SelectItems = uisi;
public void setMultiSelectListbox3SelectItems(UISelectItems uisi) {
this.multiSelectListbox3SelectItems = uisi;
public void setMultiSelectListbox4SelectItems(UISelectItems uisi) {
this.multiSelectListbox4SelectItems = uisi;
public void setMultiSelectListbox5SelectItems(UISelectItems uisi) {
this.multiSelectListbox5SelectItems = uisi;
public void setTopView(HtmlSelectManyListbox hsml) {
this.topView = hsml;
public void setSecondView(HtmlSelectManyListbox hsml) {
this.secondView = hsml;
public void setThirdView(HtmlSelectManyListbox hsml) {
this.thirdView = hsml;
public void setFourthView(HtmlSelectManyListbox hsml) {
this.fourthView = hsml;
public void setFifthView(HtmlSelectManyListbox hsml) {
this.fifthView = hsml;
public void setTopViewItems(SelectItem[] param){
this.topViewItems = param;
public void setSecondViewItems(SelectItem[] param){
this.secondViewItems = param;
public void setThirdViewItems(SelectItem[] param){
this.thirdViewItems = param;
public void setFourthViewItems(SelectItem[] param){
this.fourthViewItems = param;
public void setFifthViewItems(SelectItem[] param){
this.fifthViewItems = param;
//Label used for debugging feedback
private HtmlOutputText outputText1 = new HtmlOutputText();
public HtmlOutputText getOutputText1() {
return outputText1;
public void setOutputText1(HtmlOutputText hot) {
this.outputText1 = hot;
//Methods
* This constructor contains Creator-managed initialization code.
* Your initialization code can be placed at the end,
* but, this code will be invoked only the first time the page is rendered,
* and any properties set in the .jsp file will override settings here.
public home() {
// Creator-managed initialization code
//Listener class definitions
try {
topView.addValueChangeListener(new ValueChangeListener() {
public void processValueChange(javax.faces.event.ValueChangeEvent vce) {                  
topViewProcessChange(vce);
secondView.addValueChangeListener(new ValueChangeListener() {
public void processValueChange(javax.faces.event.ValueChangeEvent vce) {                  
topViewProcessChange(vce);
thirdView.addValueChangeListener(new ValueChangeListener() {
public void processValueChange(javax.faces.event.ValueChangeEvent vce) {
thirdViewProcessChange(vce);
fourthView.addValueChangeListener(new ValueChangeListener() {
public void processValueChange(javax.faces.event.ValueChangeEvent vce) {
fourthViewProcessChange(vce);
fifthView.addValueChangeListener(new ValueChangeListener() {
public void processValueChange(javax.faces.event.ValueChangeEvent vce) {
fifthViewProcessChange(vce);
catch ( Exception e) {
log("home Initialization Failure", e);
throw new FacesException(e);
//Attribute Initialization
this.setTopViewItems( new SelectItem[] {
new SelectItem(new Integer(1), "Top Lev. Item 1"),
new SelectItem(new Integer(2), "Top Lev. Item 2"),
new SelectItem(new Integer(3), "Top Lev. Item 3"),
new SelectItem(new Integer(4), "Top Lev. Item 4"),
new SelectItem(new Integer(5), "Top Lev. Item 5"),
new SelectItem(new Integer(6), "Top Lev. Item 6"),
new SelectItem(new Integer(7), "Top Lev. Item 7"),
new SelectItem(new Integer(8), "Top Lev. Item 8"),
new SelectItem(new Integer(9), "Top Lev. Item 9"),
new SelectItem(new Integer(10), "Top Lev. Item 10"),
new SelectItem(new Integer(11), "Top Lev. Item 11") });
this.setSecondViewItems( new SelectItem[] {
new SelectItem(new Integer(0), "") });
this.setThirdViewItems( new SelectItem[] {
new SelectItem(new Integer(0), "") });
this.setFourthViewItems( new SelectItem[] {
new SelectItem(new Integer(0), "") });
this.setFifthViewItems( new SelectItem[] {
new SelectItem(new Integer(0), "") });
// this.outputText1.setRendered(false);
public void topViewProcessChange(javax.faces.event.ValueChangeEvent vce) {
if (vce.getComponent().getId().equals("topView")){
this.setSecondViewItems( new SelectItem[] {
new SelectItem(new Integer(1), vce.getComponent().getId()),
new SelectItem(new Integer(2), "Second Lev. Item 2"),
new SelectItem(new Integer(3), "Second Lev. Item 3"),
new SelectItem(new Integer(4), "Second Lev. Item 4"),
new SelectItem(new Integer(5), "Second Lev. Item 5"),
new SelectItem(new Integer(6), "Second Lev. Item 6"),
new SelectItem(new Integer(7), "Second Lev. Item 7"),
new SelectItem(new Integer(8), "Second Lev. Item 8"),
new SelectItem(new Integer(9), "Second Lev. Item 9"),
new SelectItem(new Integer(10), "Second Lev. Item 10"),
new SelectItem(new Integer(11), "Second Lev. Item 11") });
FacesContext.getCurrentInstance().renderResponse();
public void secondViewProcessChange(javax.faces.event.ValueChangeEvent vce) {
if (vce.getComponent().getId() == "secondView"){          
this.setThirdViewItems( new SelectItem[] {
new SelectItem(new Integer(1), vce.getComponent().getId()),
new SelectItem(new Integer(2), "Third Lev. Item 2"),
new SelectItem(new Integer(3), "Third Lev. Item 3"),
new SelectItem(new Integer(4), "Third Lev. Item 4"),
new SelectItem(new Integer(5), "Third Lev. Item 5"),
new SelectItem(new Integer(6), "Third Lev. Item 6"),
new SelectItem(new Integer(7), "Third Lev. Item 7"),
new SelectItem(new Integer(8), "Third Lev. Item 8"),
new SelectItem(new Integer(9), "Third Lev. Item 9"),
new SelectItem(new Integer(10), "Third Lev. Item 10"),
new SelectItem(new Integer(11), "Third Lev. Item 11") });
FacesContext context = FacesContext.getCurrentInstance();
context.renderResponse();
public void thirdViewProcessChange(javax.faces.event.ValueChangeEvent vce) {
if (vce.getComponent().getId() == "thirdView"){
this.setFourthViewItems( new SelectItem[] {
new SelectItem(new Integer(1), vce.getComponent().getId()),
new SelectItem(new Integer(2), "Fourth Lev. Item 2"),
new SelectItem(new Integer(3), "Fourth Lev. Item 3"),
new SelectItem(new Integer(4), "Fourth Lev. Item 4"),
new SelectItem(new Integer(5), "Fourth Lev. Item 5"),
new SelectItem(new Integer(6), "Fourth Lev. Item 6"),
new SelectItem(new Integer(7), "Fourth Lev. Item 7"),
new SelectItem(new Integer(8), "Fourth Lev. Item 8"),
new SelectItem(new Integer(9), "Fourth Lev. Item 9"),
new SelectItem(new Integer(10), "Fourth Lev. Item 10"),
new SelectItem(new Integer(11), "Fourth Lev. Item 11") });
FacesContext context = FacesContext.getCurrentInstance();
context.renderResponse();
public void fourthViewProcessChange(javax.faces.event.ValueChangeEvent vce) {
if (vce.getComponent().getId() == "fourthView"){
this.setFifthViewItems( new SelectItem[] {
new SelectItem(new Integer(1), vce.getComponent().getId()),
new SelectItem(new Integer(2), "Fifth Lev. Item 2"),
new SelectItem(new Integer(3), "Fifth Lev. Item 3"),
new SelectItem(new Integer(4), "Fifth Lev. Item 4"),
new SelectItem(new Integer(5), "Fifth Lev. Item 5"),
new SelectItem(new Integer(6), "Fifth Lev. Item 6"),
new SelectItem(new Integer(7), "Fifth Lev. Item 7"),
new SelectItem(new Integer(8), "Fifth Lev. Item 8"),
new SelectItem(new Integer(9), "Fifth Lev. Item 9"),
new SelectItem(new Integer(10), "Fifth Lev. Item 10"),
new SelectItem(new Integer(11), "Fifth Lev. Item 11") });
FacesContext context = FacesContext.getCurrentInstance();
context.renderResponse();
public void fifthViewProcessChange(javax.faces.event.ValueChangeEvent vce) {
if (vce.getComponent().getId() == "fifthView"){

RB> I am trying to make a columnar navigation model for a web app using
RB> JSF. The idea is to model the Mac OS "Finder" interface, wherein a
RB> top level directory is displayed in the first column, and then
RB> clicking on an item will fill the next column with the items
RB> contained within it, and so on through n number of
RB> columns/directories. The problem I am having is that upon clicking
RB> on an item in the top view column, all of the event listeners for
RB> the other columns fire at the same time, even though each column has
RB> it's own listener. Although the listeners all fire at once, each is
RB> triggered by the parent column changing values. Is there any way to
RB> force this "cascading" effect to stop?
It seems odd that fields other than that which you clicked are receiving
ValueChangeEvent instances. That may be a bug.
I do observe something fishy in the generated listener declarations:
topView.addValueChangeListener(new ValueChangeListener() {
public void processValueChange(javax.faces.event.ValueChangeEvent vce) {
topViewProcessChange(vce);
secondView.addValueChangeListener(new ValueChangeListener() {
public void processValueChange(javax.faces.event.ValueChangeEvent vce) {
topViewProcessChange(vce);
These two use topViewProcessChange(), where as the rest use third,
fourth, fifth, etc.
Have you tried posting this to the JavaStudio Creator forum?
http://swforum.sun.com/jive/forum.jspa?forumID=123&start=0
Ed (EG Member)

Similar Messages

  • OBIEE 11g Unable to browse multiple value hierarchy for analysis.

    Hi All,
    We are using OBIEE 11g Value Hierarchy feature to display GL Segment Hierarchies.
    -     We have set the hierarchies to be Ragged and Skipped Levels in the RPD Business Model.
    -     We have dragged the hierarchies from Business Model to Presentation Layer.
    -     When selecting the hierarchies during Analysis, the first hierarchy that is browsed appears correctly. The next hierarchy when browsed just hangs.
    For example:
    Step 1: Browse Hierarchy1 (Block). The values show correctly.
    Step 2: Browse Hierarchy2 (Account). The hierarchy does not open with a blinking circle remaining forever.
    Alternatively;
    If we selected, Hierarchy 2(Account) first, the hierarchy shows correctly, but when selecting Hierarchy1 (Block) a blinking circle appears and remains for ever without opening the hierarchy.
    The nqquery.log shows correct result. My suspicion is that the issue is on the front end presentation services/javascript side.
    Is there any additional setup/configuration required to open multiple value hierarchies during analysis.
    Thanks and Regards,
    Sasi

    I have a pretty good guess at the hanging problem, unforntunitly i have no solutions yet.
    I having same type of issue, hangs when building filters on for 2nd or 3rd dim table.. I can see obiee fireing off the query to populate the dropdown by running
    select distinct on and joining to the fact table and dimensions that the users usually have selecte prior to start creatinng the filters.
    It is sort of like doing a intra dimension filter.. Sounds good but if user does not cut way down on number of fact rows by the time 2nd filtered column is selected the generated query to populate the drop down can run and run.
    OBI SE Once and discoverer dd not do this, at least not out of the box.

  • Passing multiple values to a parameter in report

    Can anyone help me how to pass multiple parameters to a parameter in my report.
    As user is able to select multiple values from list of values , can I pass the selected values to calling function.
    Suppose if User selects Value1,Value2,Value3 from list of values of a parameter P_Org,
    I need to pass all these values to parameter P_Org in my Before Trigger Function in Discoverer reproting tool.
    Thanks in advance

    I have a Before trigger Function to which the parameters will be passed.
    Suppose if User selects multiple values for a parameter then how to pass these multiple Values to that parameter?
    eg:In first Workbook Before Trigger is fired and the paramters for the trigger are
    'par1','par2','par3' etc.
    If User selects multiple values for a parameter 'par1' from the list of values displayed then how to pass all these values to 'par1' in Function?
    After firing the trigger rows are inserted in a temp_table .My second Workbook will
    fetch the rows inserted in this Temp Table.
    I hope u understood what my requirement is...
    Thanks in advance

  • 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. Thanks

    These 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?

  • Printing report that has a parameter with multiple values crashes jvm

    I am using BOE XI 4.0 as an unmanaged RAS.
    I am able to preview a report that has a string discrete parameter that can have multiple values.  If I give it a single value.  It previews fine.  If I give it an empty string it prints all values which is fine.  If I give it two discrete values, it displays just those two.
    However, if I try printing the report to a printer:
    1 parameter value - prints fine.
    2 parameter values - crashes jvm
    empty string parameter value - crashes jvm
    I would appreciate some direction on how to do this.  It works in crystal reports for eclipse.
    The test jsp I am using is based off of the samples.  The print test jsp is the same as the preview test with the exception of the following code differences.:
    preview report.jsp code
    // Create a Viewer object
    CrystalReportViewer viewer = new CrystalReportViewer();
    // Set the report source for the  viewer to the ReportClientDocument's report source
    viewer.setReportSource(clientDoc.getReportSource());
    // Process the http request to view the report
    viewer.processHttpRequest(request, response, getServletConfig().getServletContext(), out);
    // Dispose of the viewer object
    viewer.dispose();
    print report jsp code
      PrintReportOptions printOptions = new PrintReportOptions();
      printOptions.setPrinterName("DELL");
      try {
          clientDoc.getPrintOutputController().printReport(printOptions);
      } catch (ReportSDKException ex1) {
          System.out.println("Message - " + ex1.getLocalizedMessage());
      } catch (Exception ex2) {
          System.out.println("Message - " + ex2.getLocalizedMessage());
      clientDoc.close();

    I am using BOE XI 4.0 as an unmanaged RAS.
    I am able to preview a report that has a string discrete parameter that can have multiple values.  If I give it a single value.  It previews fine.  If I give it an empty string it prints all values which is fine.  If I give it two discrete values, it displays just those two.
    However, if I try printing the report to a printer:
    1 parameter value - prints fine.
    2 parameter values - crashes jvm
    empty string parameter value - crashes jvm
    I would appreciate some direction on how to do this.  It works in crystal reports for eclipse.
    The test jsp I am using is based off of the samples.  The print test jsp is the same as the preview test with the exception of the following code differences.:
    preview report.jsp code
    // Create a Viewer object
    CrystalReportViewer viewer = new CrystalReportViewer();
    // Set the report source for the  viewer to the ReportClientDocument's report source
    viewer.setReportSource(clientDoc.getReportSource());
    // Process the http request to view the report
    viewer.processHttpRequest(request, response, getServletConfig().getServletContext(), out);
    // Dispose of the viewer object
    viewer.dispose();
    print report jsp code
      PrintReportOptions printOptions = new PrintReportOptions();
      printOptions.setPrinterName("DELL");
      try {
          clientDoc.getPrintOutputController().printReport(printOptions);
      } catch (ReportSDKException ex1) {
          System.out.println("Message - " + ex1.getLocalizedMessage());
      } catch (Exception ex2) {
          System.out.println("Message - " + ex2.getLocalizedMessage());
      clientDoc.close();

  • Multiple values from database on a single text item

    i am trying to do the following
    on a single text item in a form
    (under form property pallete->records->number of items displayed is 5) run a triger "when-new-block-instance" with the following pl/sql statement
    declare
    menu_item VARCHAR2(35);
    begin
    select label into menu_item
    from menu_options;
    end;
    however, once i run the form it gives me
    WHEN-NEW-BLOCK-INSTANCE trigger raised unhandeled exception ORA-01422
    however, if in the pl/sql statement contains only
    begin
    execute querry;
    end;
    then it works fine
    The problem i beleive is the fact that the first querry retreives multiple values or recordset instead of A record.
    How can i go arond this and allow the form to list all the values in this form. Eventually i will need to add conditional SQL statments and that is why just execute querry will not work.
    Also, is there a way to dynamically assign a number to "number of records shown" property?
    All help is very much appreciated!
    null

    Hi, Marko
    I teach Forms, and I usually find a bad idea to use SQL statements directly (in particular when you can "make" Forms to do what you want).
    Inside PL/SQL, a SELECT..INTO statement is supposed to select a single row, otherwise an error occurs.
    EXECUTE_QUERY works.
    If by "conditional SQL statements" you mean restricted (filtered) queries, you don't need to write SQL to do this.
    You can set the DEFAULT_WHERE block property to a different value before using EXECUTE_QUERY, like:
    SET_BLOCK_PROPERTY('your_block', DEFAULT_WHERE, 'where menu_id > 100');
    And the answer to your second question is no, you cannot dynamically change the number of records a block is displaying.
    You can limit the number of records your block queries from the database table using Maximum Records Fetched block property (available in Forms 6 and above, not sure about Forms 5). However, this will only work as expected if you set Query All Records to Yes.
    Hope this helps,
    Pedro

  • How to use multiple values in an IF condition in RTF

    Hi,
    I have a scenario as mentioned below.
    IF column value in ('A','B')
    display C;
    end if
    IF column value not in ('A','B')
    display D;
    end if
    My query is how to provide multiple values in an IF condition.?
    Thanks,
    Anand

    But suppose "x.jar" needs a library from "y.jar". How do you put another JAR on the classpath of an applet in a Web page?
    <applet code="z.class" archive="a.jar,b.jar,c.jar">

  • Automatically Selecting Values in Multiple Values Dropdown Parameters

    Hi,
    Is it possible to have parameter values automatically selected in a dropdown in an SSRS report?  I'm using SQL Server 2008 R2 Enterprise edition.  Basically what I have in mind is this:  The user wants to save his parameter selections in a
    table that will be available as a dropdown parameter of a report, call it
    ParamUserSelection.  ParamUserSelection is the first parameter of the report and other parameters depend on it.
    We have two other parameters called ParamCountry and
    ParamState.  These are dropdown text parameters that allow multiple values to be selected.  Populating the list is not a problem as I use a standard cascading parameter technique.  What I'm trying to do is the following:
    The user selects a value from ParamUserSelection, call it Selection1.  Selection1 is stored in a table and has all the values that should be selected in ParamCountry and ParamState.  In other words, it should tell these two subsequent parameters,
    what values should be selected in their respective dropdowns.  For example if the user selects Selection1 from ParamUserSelection, it reads the values in the database table and if it finds US and Canada for countries and CA, NY, ON for states, ParamCountry
    should be populated with all the countries available in the database but should have ONLY US and Canada as selected values and ParamState should be populated with all the states in the database but should have ONLY CA, NY and ON as selected values.
    If then I click on selection 2 and it has ParamCountry = US, ParamState = TX,OH in its database then again all countries and states should be in the dropdown but only US for ParamCountry and TX,OH for ParamState should be selected.
    Is this possible with SSRS?  I've tried using the Default Values tab with a dataset that returns all the selected values under Report Parameters Properties but this only works for the first time that I select ParamUserSelection.  It appears that
    if I change the value of ParamUserSelection again, the default values are not invoked.
    If this is possible, please tell me how to do this as I have been struggling for a day with it.

    Hi Comedian,
    According to your description, you have a report with three parameters (ParamUserSelection, ParamCountry, ParamState). The available value lists of ParamCountry and ParamState are based on the selection of a value for ParamUserSelection. Now you want to
    show all countries and states in their parameter dropdown list when selecting a user selection instead of only showing the cascading values. Right?
    In Reporting Service, when we want a parameter to show the cascading values, we only need to set the corresponding dataset and field for Default Values in this parameter. In this scenario, if we want to show all countries and states in their dropdown list,
    we just need to set another dataset for Available Values in those parameters so they can display all countries and states. We have tested your case in our local environment. Since you have done with the cascading parameters, we just give some part of steps
    and screenshots for your reference:
    We created two tables (dbo.Selection, dbo.states) based on your information.
    Create one more dataset (named dataset2) in your report, put text below into your query:
    select distinct Country from states
    Create another dataset (named dataset3), put text below into your query:
    select distinct State from states
    Go to your ParamCountry, in Available Values, select dataset2 and Country for dataset and field.
    Go to your ParamState, in Available Values, select dataset3 and State for dataset and field.
    Save and preview. It looks like below:
    Reference:
    Report Parameters (Report Builder and SSRS)
    If you have any question, please feel free to ask.
    Best Regards,
    Simon Hou
      

  • How to use Ajax Get Multiple Values in Tabular form?

    Hi All-
    I am trying to use AJAX to get multiple values in tabular form by using Denes Kubicek's example in the following link -
    http://apex.oracle.com/pls/otn/f?p=31517:239:9172467565606::NO:::
    Basically, I want to use the drop down list to populate rest of the values on the form.
    I have created the example(Ajax Get Multiple Values, application 54522) on Oracle site -
    http://apex.oracle.com/pls/apex/f?p=4550:1:0:::::
    Workspace: iConnect
    login: demo
    password: demo
    I was able to duplicate his example on page 1 (home page).
    However, I want to use system generate tabular form to finish this example, and was not able to populate the data correctly.
    Page 2 (method 2) is the one that I am having trouble to populate the column values. When I checked application item values in Session, and the values seems to be populated correctly.
    This is what I have done on this page:
    1. Create an Application Process On Demand - Set_Multi_Items_Tabular2:
    DECLARE
      v_subject my_book_store.subject%TYPE;
      v_price my_book_store.price%TYPE;
      v_author my_book_store.author%TYPE;
      v_qty NUMBER;
      CURSOR cur_c
      IS
      SELECT subject, price, author, 1 qty
      FROM my_book_store
      WHERE book_id = :temporary_application_item2;
    BEGIN
      FOR c IN cur_c
      LOOP
      v_subject := c.subject;
      v_price := c.price;
      v_author := c.author;
      v_qty := c.qty;
      END LOOP;
      OWA_UTIL.mime_header ('text/xml', FALSE);
      HTP.p ('Cache-Control: no-cache');
      HTP.p ('Pragma: no-cache');
      OWA_UTIL.http_header_close;
      HTP.prn ('<body>');
      HTP.prn ('<desc>this xml genericly sets multiple items</desc>');
      HTP.prn ('<item id="f04_' || :t_rownum || '">' || v_subject || '</item>');
      HTP.prn ('<item id="f05_' || :t_rownum || '">' || v_price || '</item>');
      HTP.prn ('<item id="f06_' || :t_rownum || '">' || v_author || '</item>');
      HTP.prn ('<item id="f07_' || :t_rownum || '">' || v_qty || '</item>');
      HTP.prn ('</body>');
    END;
    2. Create two application items - TEMPORARY_APPLICATION_ITEM2, T_ROWNUM2
    3. Put the following in the Page Header:
    <script language="JavaScript" type="text/javascript">
    function f_set_multi_items_tabular2(pValue, pRow){
        var get = new htmldb_Get(null,html_GetElement('pFlowId').value,
    'APPLICATION_PROCESS=Set_Multi_Items_Tabular2',0);
    if(pValue){
    get.add('TEMPORARY_APPLICATION_ITEM2',pValue)
    get.add('T_ROWNUM2',pRow)
    }else{
    get.add('TEMPORARY_APPLICATION_ITEM2','null')
        gReturn = get.get('XML');
        if(gReturn){
            var l_Count = gReturn.getElementsByTagName("item").length;
            for(var i = 0;i<l_Count;i++){
                var l_Opt_Xml = gReturn.getElementsByTagName("item")[i];
                var l_ID = l_Opt_Xml.getAttribute('id');
                var l_El = html_GetElement(l_ID);   
                if(l_Opt_Xml.firstChild){
                    var l_Value = l_Opt_Xml.firstChild.nodeValue;
                }else{
                    var l_Value = '';
                if(l_El){
                    if(l_El.tagName == 'INPUT'){
                        l_El.value = l_Value;
                    }else if(l_El.tagName == 'SPAN' && l_El.className == 'grabber'){
                        l_El.parentNode.innerHTML = l_Value;
                        l_El.parentNode.id = l_ID;
                    }else{
                        l_El.innerHTML = l_Value;
        get = null;
    </script>
    Add the follwing to the end of the above JavaScript:
    <script language="JavaScript" type="text/javascript">
    function setLOV(filter, list2)
    var s = filter.id;
    var item = s.substring(3,8);
    var field2 = list2 + item;
    f_set_multi_items_tabular2(filter, field2);
    4. Tabular form query:
    select
    "BOOK_ID",
    "BOOK",
    "SUBJECT",
    "PRICE",
    "AUTHOR",
    "QTY",
    "BOOK_ID" BOOK_ID_DISPLAY
    from "#OWNER#"."MY_BOOK_STORE"
    5. In Book_ID_DISPLAY column attribute:
    Add the following code to element attributes: onchange="javascript:f_set_multi_items_tabular2(this.value,'#ROWNUM#');"
    Changed to -> onchange="javascript:setLOV(this,'f03');"
    Now,  T_ROWNUM2 returns value as f03_0001. But, TEMPORARY_APPLICATION_ITEM2 returns as [object HTMLSelectElement]...
    Please help me to see how I can populate the data with this tabular form format. Thanks a lot in advanced!!!
    Ling
    Updated code in Red..

    Ling
    Lets start with looking at what the javascript code is doing.
    function f_set_multi_items_tabular(pValue, pRow){
      /*This will initiate the url for the demand process to run*/
      var get = new htmldb_Get(null,html_GetElement('pFlowId').value,
                              'APPLICATION_PROCESS=Set_Multi_Items_Tabular',0);
      if(pValue){
        /*If there is an value than submit item name with value*/
        get.add('TEMPORARY_APPLICATION_ITEM',pValue)
        get.add('T_ROWNUM',pRow)
      }else{
        /*Else set the item TEMPORARY_APPLICATION_ITEM to null*/
        get.add('TEMPORARY_APPLICATION_ITEM','null')
      /*Submit the url and te returned document is of type XML*/
      gReturn = get.get('XML');
      if(gReturn){
        /*There is something returned*/
        var l_Count = gReturn.getElementsByTagName("item").length;
        /*For all elements of the tag item*/
        for(var i = 0;i<l_Count;i++){
          /*Get the item out of the XML*/
          var l_Opt_Xml = gReturn.getElementsByTagName("item")[i];
          /*Get the id of the item*/
          var l_ID = l_Opt_Xml.getAttribute('id');
          /*Get the element in the original page with the same id as
          **the item we have in the XML produced by the ondemand process
          var l_El = html_GetElement(l_ID);
          /*Now get the value of the item form the XML*/
          if(l_Opt_Xml.firstChild){
            var l_Value = l_Opt_Xml.firstChild.nodeValue;
          }else{
            /*There is no value*/
            var l_Value = '';
          if(l_El){
            /*There is an element with the same id as the item we are processing*/
            if(l_El.tagName == 'INPUT'){
              /*The element is an input item just set the value*/
              l_El.value = l_Value;
            }else if(l_El.tagName == 'SPAN' && l_El.className == 'grabber'){
              /*If it is a span elment and has the class grabber
              **Then set the innerHTML of the parent to the value
              **and the id of the parent to the id
              l_El.parentNode.innerHTML = l_Value;
              l_El.parentNode.id = l_ID;
            }else{
              /*Else set the value as innerHTML*/
              l_El.innerHTML = l_Value;
      get = null;
    Now where it went wrong in your initial post
    The XML that was returned by your XML process would be something like
    <body>
      <desc>this xml genericly sets multiple items</desc>
      <item id="f02_1">CSS Mastery</item>
      <item id="f03_1">22</item>
      <item id="f04_1">Andy Budd</item>
      <item id="f05_1">1</item>
    </body>
    When you don't use apex_item to create your tabular form a item in the table will look like
    <input id="f02_0001" type="text" value="CSS Mastery" maxlength="2000" size="16" name="f05" autocomplete="off">
    Notice the id's f02_1 and f02_0001 don't match.
    So to make it work the XML would have to look like
    <body>
      <desc>this xml genericly sets multiple items</desc>
      <item id="f02_0001">CSS Mastery</item>
      <item id="f03_0001">22</item>
      <item id="f04_0001">Andy Budd</item>
      <item id="f05_0001">1</item>
    </body>
    To do that simply use lpad in the ondemand process like
    HTP.prn ('<item id="f02_' || lpad(:t_rownum,4,'0') || '">' || v_subject || '</item>');
    HTP.prn ('<item id="f03_' || lpad(:t_rownum,4,'0') || '">' || v_price || '</item>');
    HTP.prn ('<item id="f04_' || lpad(:t_rownum,4,'0') || '">' || v_author || '</item>');
    HTP.prn ('<item id="f05_' || lpad(:t_rownum,4,'0') || '">' || v_qty || '</item>');
    Keep in mind that the above is based on your original post and #ROWNUM# not being lpadded with zero's.
    Nicolette

  • Passing Multiple Values from Multi Select

    Hi,
    My requirement is simple. I have created a simple Multi Select Option in parameter form and i want to send multiple selected values from the multi select option (in parameter form) to reports.
    eg:
    I want to send multiple countries code as input .........'US', 'CA', 'IND', 'UK'
    Can i do it in Oracle 6i reports, Thanks in Advance.
    Regards,
    Asgar

    Hi Thanks Again,
    For such a nice response. I got the Lexical Where condition properly running but still getting problems in catching the multiple values to be passed from form. just i will give u an insight of wat i have done:
    SQL:
    SELECT ALL FROM EMPLOYEES &cond_1* -- Working FIne
    in my Html Parameter Form i have an Multi Select component (the Problem is here) it is not passing more than i value from the form once i am accessing it from web or running it in paper report. In paper report layout it is not allowing me to select more than one value. but in HTML it is allowing to select multiple values but at the server end (After Parameter Form Trigger) it is giving a single value not multiple values.
    In PL/SQL when i checking the length of country_id i m getting it as one.
    Here is my SQL code
    srw.message(10, LENGTH(:country_id_1));
    :cond_1 := 'where country_id = '''|| :country_id_1 ||'''';
    This is passing the condition properly to SQL but only with single value but i want to pass multiple values
    I am struck in this+_
    WHERE CONTRY_COLUMN IN ('USA','UAE') -- This variable you have to pass from you form...
    Here as you said you gave multiple selection in your parameter form to generate report. So before generation report just prepare variable like this as it is bold above.
    and pass parameter through your runtime form to the report as you pass the normal parameter...liket this i gave you example...
    ADD_PARAMETER(PARAMETER_LIST_NAME,'P_CONT_PARAM',TEXT_PARAMETER,vString);
    Sorry for troubling you for a small thing but please help me to solve this issue.
    Thanks Again............
    Asgar.

  • Displaying All Values from a Multiple Value Parameter

    Hi,
    Using XI, I have a parameter field that allows the user to enter multiple values Eg. 01, 02, 13, 14.  I want to create a formula to display all the values the user has selected. 
    Is there a way to do this? 
    Thanks,
    Brian

    join({?Parameter},",")
    creates a string with the items in your parameter separated by commas

  • How do I pass multiple values from a text box to an update statement

    I hope this does not sound to lame. I am trying to update multiple values Like this:
    Code|| Computer Desc || Computer Price || Computer Name
    SEL1 || Apple macbook || 1564 || Apple Macbook Basic
    SEL2 || Dell 630 || 1470 || Dell Latitude
    I want to change all six values at once in one update statement based on the Code, I can't find a good tutorial/example to help me.
    Can anyone point me in the right direction?
    Thanks so much,
    Laura

    You can do conditional updates with decode or case statements e.g.
    SQL> create table t as
      2  select 'SEL1' as code, 'Apple macbook' as comp_desc, 1564 as comp_price, 'Apple Maxbook Basic' as comp_name from dual union
      3  select 'SEL2', 'Dell 630', 1470, 'Dell Latitude' from dual
      4  /
    Table created.
    SQL>
    SQL> update t
      2  set comp_desc = CASE code WHEN 'SEL1' THEN 'Test1' Else 'Test2' END,
      3      comp_price = CASE code WHEN 'SEL1' THEN 1234 Else 2345 END,
      4      comp_name = CASE code WHEN 'SEL1' THEN 'Test1 Name' Else 'Test2 Name' END
      5  /
    2 rows updated.
    SQL>
    SQL> select * from t
      2  /
    CODE COMP_DESC     COMP_PRICE COMP_NAME
    SEL1 Test1               1234 Test1 Name
    SEL2 Test2               2345 Test2 Name
    SQL>

  • [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

  • How to retrieve multiple values from a DB Adapter to a Web Service

    Hello,
    I'm creating a login WS that receives the username and password and returns the user status, full name and a set of permissions (the number of permissions varies among users).
    In order to do that i've created a DBAdapter that is calling a PL/SQL procedure. This DBAdapter is connected to the login Web Service through a mediator.
    I have two problems:
    1 - I don't know the type of variable that the PL\SQL procedure should return. Like I said I need to retrieve an undefined number of values from a table (user permissions). How can I do this inside a PL\SQL procedure? What kind of structure should i return?
    2 - How can i assign a multiple value variable (the permission variable) in the mediator? Is the mediator going to identify that this is variable is multiple valued and add automatically a for-each statement?
    The Oracle DB version im using is the 11.1.0.7.0 and the Oracle SOA Suite 11.1.1.3.0.
    Thanks in advance,
    Paulo

    Hey guys,
    thanks for your help.
    I've created a userdefined type and sucessfully retrievied from the PL\SQL procedure multiple values. I have also mapped this values with the web service.
    Even though everything's working fine i would like to understand if it is also possible to use the XMLType to return these values. I ask this cause I don't no if by returning a XMLType i can explicitly map the XML elements inside the mediator component.
    If possible what are the main advantages/disavantages between using XMLType and Userdefined Types?
    Paulo.

  • Passing Multiple Values from a worksheet to PL/SQL function.

    Hi All,
    Is there any way to pass multiple values selected in a worksheet to a PL/SQL function ?
    I will try to explain the scenario:
    We have a crosstab report that showing all the customer details, deposit sum of a customer in each date in a date range selected. With the customer details we are showing the Rank of a customer based on the deposit in the latest date selected. Filtering is based on the rank, ie Top50 or Top60 etc.( As I said rank is calculating based on the deposit in the latest date).This is working fine.
    Now the new requirement is to : For example, in Top50 report, list all the customers, who were in the Top50 list, in any of the dates selected. We are able to display the daywise rank, but when giving a condition like daywiserank <= 50, the result becomes uncertain. Some blank lines, wrong amounts etc..
    As a work around we tried to find out the rank in a PL/SQL function. But the issue there is : we have some multiple value parameters used in the worksheet.
    Is there any way to pass multiple values selected in a worksheet to a PL/SQL function ?
    Or any other work arounds for the scenario explained?
    Reagrds,
    Jeneesh

    Hi Russ,
    Thanks for the response.
    Russ Proudman wrote:
    1. I thought there was an analytical function similar to rank - or maybe an option of rank - that if there are duplicate records to have them all considered the same rank. So if you had 3 records all the same as rank=2 then a condition saying where rank=2 would return the 3 records. You could check into this.
    We are already using DENSE_RANK. But the issue is the output contains incorrect null values nd repeated rows.
    We got it solved as I explained in the previous post. But will that AGGREGATION MODE setting ( Which discoverer says - not recommended) have any issue? I mean side effects?
    Russ Proudman wrote:
    2. Another thought is that you can create a PL/SQL routine - that's called from a SQL function registered in Discoverer - where a table is created that does the first part of your query. Then a worksheet is created to use the data from that table. So, in essence, the table would have your top50 ranked customers. Then you can write any kind of worksheet against that table. However, DBAs are loath to allow tables - that they didn't create! - many times in a PROD environment.
    Here also the same problem will occur: as the top 50 will depend upon the parameters. I cannot pass those parameters to PL/SQL Function.And storing the top50 ( itmay be top100 or to 150 also) for all combinations of the parameters is impossible
    Russ Proudman wrote:
    3. Finally, are you sure you're rank function is correct in that if you're getting blank lines, maybe the 'over' part is not considering all columns needed to determine the rank?
    Yes the query we are using is correct. The output QUERY of discoverer gives correct results in Sqlplus.
    Regards,
    Jeneesh

Maybe you are looking for

  • Image gallery From an XML file...

    Will flash reconize an XML file that is parameter based (Call Functions) into a database to create a type of listing service to show homes for sale? My client is wanting a basic image gallery for now that will later become a a fullfledged interactive

  • HT201253 I cannot sync my 5S with ITunes.  I can sync my iPad with same cord and computer

    I recently sent my 5S through the washing machine and got a replacement 5S.  I am running Windows 7. I was able to "restore" it from iTunes without any issues other than I hadn't back up in a month.  Now when I try to sync with iTunes it gets to step

  • Restore from hibernate causes crash

    Hi, My MBA hibernates when it is not being used for a while. When I power on after hibernate, the system crashes and I need to restart. I get the error message below. I did a search but couldn't find anything. Anyone have an idea what can be wrong? W

  • FaceBook and Twitter Plugins with HTTPS

    Has anyone converted the FaceBook or Twitter plug-ins to work with HTTPS. I successfully converted the Google Recaptcha plugin but haven't been able to get these to work. Thanks.

  • Filter based on two dimensions

    Dear friends, Need your help on below query - Dimension #1: A1 A2 A3 B1 B2 Dimension #2: C1 C2 D1 D2 Apart from this I have the 'Time' dimension. Now I need to build report with - Row axis:  Dimension # 1 & #2 Column axis: Time However, my requiremen