• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Passing arrays from JSF to Javascript

 
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
hello team,

this is my first post here in this forum. i am trying to implement javascript filter in <h:selectManyListbox>. selectmanylistbox takes the arraylist as its value type.

When i try to pass the #{bean.arraylist} from jsf in javascript filter function it reads as object , not the list of string value. how can i pass and convert this arraylist object (#{bean.arraylist}) into javascript array?. searched a lot in this topic but very less documentation in this topic. In jsp it is easy but i find really unfriendly using javascript in jsf. i am nearly close to my filter :P.

thanks


the relevant code:

jsf code

<h:inputText value="#{addRelServiceBean.addRelDTO.filtervalue}" id="filter"
onkeyup="handleKeyUp('Form:filter','Form:availablelist','Form:selectedlist','#{addRelServiceBean.availablelist}','9999');"/>

javascript src code

function handleKeyUp(input,select,selected,userList,maxNumToShow)
{
var selectObj, textObj, functionListLength;
var i, searchPattern, numShown,addval;
textObj = $(input);
selectObj = $(select);
functionListLength = userList.length;
if(textObj.value=='Enter name to filter')
searchPattern="^";
else
searchPattern = "^"+textObj.value;
re = new RegExp(searchPattern,"gi");
selectObj.length = 0;
numShown = 0;
for(i = 0; i < functionListLength; i++)
{
if(userList[i].search(re) != -1)
{
selectObj[numShown] = new Option(userList[i],"");
numShown++;
}
if(numShown == maxNumToShow)
{
break;
}
}
if(selectObj.length == 1)
{
selectObj.options[0].selected = true;
}
}
function addSelectedValue(source,destination){
sourceObj = $(source);
destinationObj = $(destination);
if(sourceObj.selectedIndex>=0)
{
destinationObj[destinationObj.length]=new Option(sourceObj.options[sourceObj.selectedIndex].text,sourceObj.options[sourceObj.selectedIndex].value);
sourceObj.options[sourceObj.selectedIndex]=null;
}
}
 
Saloon Keeper
Posts: 27762
196
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Welcome to the JavaRanch, Raunak! "Be Nice" is our specialty. We leave the flaming to other forums!

There's a button in the row of formatting options above the message text area that's labelled "Code". You can use this to enter code and preserve its formatting, which will make your code postings more readable.

Core JSF is all about generating basic HTML, so its JavaScript support is limited to what you can get in raw HTML. Which is mostly just adding script attributes to various form controls and stuff that helps with CSS.

To actually get an array created in JavaScript from core JSF isn't something I know how to do. However, while core JSF doesn't have much support for JavaScript, there are a number of extension tagsets that do JavaScript - and, more importantly AJAX - very well. I've been using the RichFaces tagset for quite a while, and while I haven't been doing client-side array manipulations with it, I's sure it's within the abilities of the RichFaces tags.

JSF is actually a good pairing with AJAX, since a good AJAX-aware tagset can dynamically generate the proper JavaScript for a lot of tasks automatically, tuned to the particular brand and version of browser that each client is using. When taken to their limits, they can even generate non-JSF alternatives for clients who for one reason or other have switched off their browser's JavaScript.

Tag libraries like RichFaces are so powerful that a lot of times one doesn't even need to code any JavaScript at all. Everything that's needed is done by the tags themselves.
 
raunak tuladhar
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
hi tim,

thanks for the information about richfaces. now i am using the rich faces tags and the a4j tags also . I am very new to these components of jsf

I solved out my problem that i specified and would like to share here

1. first i stored the required values in javascript array
2. then i initialize the stored javascript array in hiddeninput component by means of javascript "document.getElementById('hidden').value = array
3. then hidden variable was binded in java as string n there i stored string in java array by using the "split function" (which is a cool method to use) and i was done with my problem


but another problem arised and i would like to ask it here again. i would like to tell my requirement first

i have three <h:selectOneListbox>. now i am trying to render
1. the second selectOneListbox from first selectOneListbox and
2. render third selectOneListbox from second selectOneListbox (which is rendered by first selectOneListbox ).

No. 1 works ok for me
When i go for number 2 then it gives the error

Error


The Relevant Code for this

JSF code


java code

i tried it many times but cant fix this problem. please help :S and thanks once again
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic