views:

285

answers:

2
<select id="ordersSelect" class="drop-down" onchange="somemethod()"> 

<c:forEach items="${orders}" var="order" varStatus="orderStatus">
  <option value="${order.id}"> ${order.publicId} </option>
</c:forEach>

</select>

I have the above peice of code in a JSP page, that receives a list of Orders and each order has some information, the particular information that I want to display in a SELECT field is the publicId.

The problem is that, on display there is only one OPTION in the SELECT and the rest of the order's publicId s are displayed as normal text below the SELECT box and not an OPTION to select.


I found out that the publicId actually contains a String like A10/0001/0 and that is the character "/" is most probably causing the problem.

Any solutions/suggestion/ideas?

+1  A: 

This is more likely caused by a doublequote " in the option value. At any way, you need to escape HTML entities. You can use JSTL's fn:escapeXml() for this.

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

...

<option value="${fn:escapeXml(order.id)}">${fn:escapeXml(order.publicId)}</option>
BalusC
Yes, that is correct, its the <code>"</code> that causes problem. Thanks!
saky
A: 

I'm not sure that is the problem. I have created the following static HTML and it works in Firefox and Internet Explorer 8.

<select id="ordersSelect" class="drop-down" onchange="somemethod()"> 
    <option value="A100/000/00">A100/000/00</option>
    <option value="A100/000/00">A100/000/00</option>
    <option value="A100/000/00">A100/000/00</option>
</select>

Feel free to let me know what browser you are using and maybe post the "final" html output of your page.

Sohnee
Thanks for testing this, there is a bug else where getting random public ids.
saky