我在文本文件中有条目,我想将其加载到下拉框中。
我希望在加载jsp页面时发生这种情况。如果我有一个触发请求对象传递给servlet的按钮,我可以很容易地做到这一点。如何在页面加载时发送请求对象 - 我是否需要使用Javascript或者这是我可以用jps做的事情。
答案 0 :(得分:2)
您可以在服务器端填充它。我的意思是,当你在JSP上创建选择框时,然后填充它。例如:
<select id="sel1" name="animal">
<c:forEach var="animal" items="${model.animals}">
<option value="<c:out value="${animal.id}"/><c:out value="${animal.name}"/></option>
</c:forEach>
</select>
如果那是不可能的,实际的或期望的,你需要使用某种形式的AJAX方法。我个人使用jQuery。例如:
<select id="sel1" name="animal">
</select>
<script type="text/javascript">
$(function() {
$.get('/server/getanimals', function(data, textStatus) {
var sel = $("#sel1");
for (var i=0; i<data.length; i++) {
sel.append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
}
}, 'json');
});
</script>
上面的呼叫/server/getanimals
已准备就绪。期望返回一个带有动物列表的JSON对象,然后用它来填充选择框。
有很多方法可以为这只特殊的猫提供皮肤。
答案 1 :(得分:0)
您可以使用Servlet的doGet()
方法预处理GET请求的数据。 doPost()
用于对POST请求进行后处理(当您提交表单时)。
示例:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Option> options = optionDAO.list();
request.setAttribute("options", options);
request.getRequestDispatcher("page.jsp").forward(request, response);
}
Option
类只是您自己的包含属性value
和label
的javabean类。如果您愿意,也可以使用List<Map<String, String>>
。
在JSP中,您可以使用JSTL c:forEach
来迭代列表
<select name="foo">
<c:forEach items="${options}" var="option">
<option value="${option.value}">${option.label}</option>
</c:forEach>
</select>
最后在web.xml
中映射servlet并调用请求,使其与url-pattern
匹配,例如http://example.com/contextroot/page。