Search code examples
javajspspring-mvcforeachjsp-tags

EL inside c:foreach are not evaluated


I work on a project in JAVA with Spring MVC.

I want to make a form with checkboxes but, I have customized checkboxes, so I can't use spring's form:checkboxes.

So I try to make a c:foreach loop to display my checkboxes :

<c:forEach var="element" items="${targetableBars}" varStatus="status">
    <div class="checkboxElement">
        <div class="squaredOne">
            <input id="targetedBarIds<c:out value="$(status.index)"/>" name="targetedBarIds" type="checkbox" class="squaredInput" value="<c:out value="$(status.index)"/>" checked="checked">
            <label for="targetedBarIds$(status.index)"></label>
        </div>
        <span>$(element.name)</span>
    </div>
</c:forEach>

and it displays :

<div class="checkboxElement">
    <div class="squaredOne">
        <input id="targetedBarIds$(status.index)" name="targetedBarIds" type="checkbox" class="squaredInput" value="$(status.index)" checked="checked">
        <label for="targetedBarIds$(status.index)"></label>
    </div>
    <span>$(element.name)</span>
</div>

<div class="checkboxElement">
    <div class="squaredOne">
        <input id="targetedBarIds$(status.index)" name="targetedBarIds" type="checkbox" class="squaredInput" value="$(status.index)" checked="checked">
        <label for="targetedBarIds$(status.index)"></label>
    </div>
    <span>$(element.name)</span>
</div>

<div class="checkboxElement">
    <div class="squaredOne">
        <input id="targetedBarIds$(status.index)" name="targetedBarIds" type="checkbox" class="squaredInput" value="$(status.index)" checked="checked">
        <label for="targetedBarIds$(status.index)"></label>
    </div>
    <span>$(element.name)</span>
</div>

The EL inside the loop are not evaluated instead of the one on the forEach is!

I ve read something on the web.xml conf: I changed it but nothing is better :

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        version="2.5">


</web-app>

and here is the full JSP:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@page session="true"%>
<%@page isELIgnored="false" %>

<div class="form-header">
    <h1 class="title">${title}</h1>
    <h2 class="subtitle"><span><img class="subtitleImg" src="images/edit_L.png" /> Create a news</span></h2>
</div>

<div class="form-body">
    <form id="createNews" class="form form-vertical" action="/meltdown/bo/createnews" method="POST" enctype="multipart/form-data">
        <div class="control-group">
            <label>Title</label>
            <div class="controls">
             <input id="newsDisplayer.title" name="newsDisplayer.title" type="text" placeholder="Title">
            </div>
        </div>      
        <div class="control-group textarea">
            <label>Content</label>
            <div class="controls">
                <textarea id="newsDisplayer.text" name="newsDisplayer.text" placeholder="Content..."></textarea>
            </div>
        </div>
        <div class="control-group">
            <label>Image</label>
            <div class="controls fileUpload">
                <input type="file" name="imageUpload" accept="image/*" value="" placeholder="Choose File">
            </div>
        </div>
        <div class="control-group">
            <label>Date</label>
            <div class="controls">
                <input id="date" name="newsDisplayer.date" type="text" value="">
            </div>
        </div>
        <div class="control-group">
            <label>Targeted Bars</label>
            <div class="controls">
                <c:forEach var="element" items="${targetableBars}" varStatus="status">
                    <div class="checkboxElement">
                        <div class="squaredOne">
                            <input id="targetedBarIds<c:out value="$(status)"/>" name="targetedBarIds" type="checkbox" class="squaredInput" value="<c:out value="$(status.index)"/>" checked="checked">
                            <label for="targetedBarIds$(status)"></label>
                        </div>
                        <span>$(element.name)</span>
                    </div>
                </c:forEach>
                <input type="hidden" name="_targetedBarIds" value="on">
            </div>
        </div>
        <div class="control-group">
            <div class="controls">
            <button type="submit" class="btn">
                    Publish
                </button>
            </div>
        </div>   
    </form>
</div>

<span class="btn btn-success fileinput-button">
        <i class="glyphicon glyphicon-plus"></i>
        <span>Select files...</span>
        <!-- The file input field used as target for the file upload widget -->
        <input id="fileupload" type="file" name="files[]">
</span>
<br>
<br>
<!-- The global progress bar -->
<div id="progress" class="progress">
        <div class="progress-bar progress-bar-success"></div>
</div>

<script type="text/javascript" >
    $('#date').datetimepicker({
            timepicker:false,
            format:'d.m.Y'
        });
</script>
<script src="<c:url value='/resources/js/singlefileupload.js' />"></script>

thanks!!


Solution

  • <label for="targetedBarIds$(status.index)"></label>
    

    Don't you want curly braces? More like ${status.index}?