2

I have the following simple script, which I am using to dynamically create the list elements in a <ul>

<script type="text/javascript">
    function generate(){
        var arr = new Array();
        <c:forEach items="${articles}" var="a" varStatus="status">
            $('#listitems').append(
                "<li>"+${a.title}+"</li>"
            );
            arr[${status.index}] ="${a.slideShow.images}";
        </c:forEach>
    }
</script> 

My problem stems from the images attribute. Every article has a slideshow and every slideshow has a list of images. I want to pull out the very first image from the list of images via the jave list.get(index); I want to do something like "${a.slideShow.images.get(0)}";. The get() is a java method from the list object.

Any ideas?

Faiyet
  • 5,341
  • 14
  • 51
  • 66
  • 1
    Javascript is in no way related to Java, apart from the first four letters of the name. – Adam Robinson Feb 12 '10 at 18:45
  • 2
    Forget about Java, use plain (real javascript), and DOM (Document Object Model) to get the items in that UL. JavaScript is also typically client side code. – JL. Feb 12 '10 at 18:46
  • 1
    Guys, read the question and code instead of only title before commenting. – BalusC Feb 12 '10 at 19:00
  • Titles are important. Are they not a synopsis of the problem? If the question states something different than the prose, might it not suggest a misunderstanding? – Upperstage Feb 12 '10 at 19:03
  • Hi guys, I'm terrably sorry about the ambiguous wording. BalusC, point well taken. Thanks for the help. – Faiyet Feb 17 '10 at 14:11

2 Answers2

5

In EL you can use the brace notation to access a List element by index. Thus, the following should do:

arr[${status.index}] = "${a.slideShow.images[0]}";

This will behind the scenes do exactly as you proposed: a.getSlideShow().getImages().get(0).

That said, you normally declare JS arrays like follows:

var arr = [];

The new keyword is considered discouraged in JS.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
  • new keyword discouraged for creating arrays? Or always discouraged? – Upperstage Feb 12 '10 at 19:00
  • 1
    @Upper Stage: http://stackoverflow.com/questions/383402/is-javascript-s-new-keyword-considered-harmful – BalusC Feb 12 '10 at 19:08
  • @Binaryrespawn: What do you mean with "causing my page not to load"? This is too ambiguous. If you get a blank page, check server logs for any exceptions/errors. If you get a normal page, but the images doesn't get loaded, rightclick page and view generated HTML/JS source code and verify if it is syntactically valid. – BalusC Feb 18 '10 at 16:26
  • Hi,this stsatement did not work for me. It causes my page not to load, may be because there are articles with no slideshow and hence no images. Hence I did this, – Faiyet Feb 18 '10 at 19:16
  • As said, just open page in browser and check generated JS code if it is **syntactically valid**. Maybe it represents a string value and you're forgotten singlequotes around the JS variable value. – BalusC Feb 18 '10 at 20:10
1

As those who commented on your question suggest, this is a common misunderstanding. By the time your JavaScript executes (in the browser), Java and JSP and JSTL are no longer available. The JSTL/JSP execute at the server to create source/HTML that is then sent to the client.

View source on your page - it might shed some light. You should not see the JSP/JSTL you include above.

Upperstage
  • 3,747
  • 8
  • 44
  • 67
  • You are correct. By the wording of the question and the attached comments, I was not certain he understood that. Do you think my answer is confusing? – Upperstage Feb 12 '10 at 18:57