是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有点混乱。
答案 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);
});
}