JSTL用于显示目的

时间:2014-03-03 23:57:46

标签: java javascript jstl

是JSTL核心/功能仅用于显示目的吗?像javascript不能用于显示输入字段而不是混合javascript和JSTL。

当我尝试用选项填充选择元素时,我最终得到了这个。

function fill(){

var select=document.getElementById("sel");

<c:foreach items="${value}" var="op">

var option=document.createElement("option");
option.text='${op.optionname}';

select.add(option);

</c:foreach>

}

我在这里尝试做的是在点击一个按钮时用选项填充一个select元素。有没有办法只用jstl实现这个?我使用jstl有点混乱。

2 个答案:

答案 0 :(得分:0)

  

是JSTL核心/功能仅用于显示目的吗?

一般来说,是的。

当您在服务器上执行JSTL时,您不需要JavaScript。你可以这样做:

<select>
  <c:forEach items="${value}" var="op">
    <option value="${op.optionname}">${op.optionname}</option>
  </c:forEach>
</select>

另请注意,根据您使用的框架,它可以为您的Java对象提供一种简单的方法来支持HTML表单字段,如选择列表或输入框。 Spring MVC有一组扩展的标签可以做到这一点,但你可以混合常规HTML和JSTL而没有问题。

JSTL中的Javascript将被服务器忽略并且仅在客户端(即最终用户的计算机)上执行,到那时服务器将获取JSTL并呈现为HTML(或者您正在返回的任何其他内容)

因此,如果您想在用户点击某些内容时动态填充列表,则需要使用纯JavaScript而不是JSTL,因为JSTL仅在服务器端处理。

您可以使用以下内容组合这两种方法:

<div id="hidden-div" style="display:none">
  <select>
    <c:forEach items="${value}" var="op">
      <option value="${op.optionname}">${op.optionname}</option>
    </c:forEach>
  </select>
</div>

然后在显示列表之前将jQuery单击侦听器添加到您希望用户单击的按钮:

$('#special-button').on('click', function(e){
  $('#hidden-div').show();
}

答案 1 :(得分:0)

你可以试试这个。

function fill(){ 
  var select=document.getElementById("sel"); 
  var options = [<c:foreachitems="${value}" var="op">'${op.optionname}',</c:foreach>];  
  $(options).map(function(index,optionValue){ 
      var option=document.createElement("option");
      option.text = optionValue; 
      select.add(option); 
  }); 
}