2009-11-15 41 views
2

我有一個文本文件中的條目,我想將其加載到下拉框中。如何在頁面加載時觸發servlet方法

我想在加載jsp頁面時發生這種情況。如果我有一個觸發將請求對象傳遞給servlet的按鈕,我可以輕鬆地做到這一點。如何在頁面加載時發送請求對象 - 我是否需要使用Javascript或者這是我可以用jps做的事情。

回答

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對象,然後用它來填充選擇框。

有很多方法來剝皮這隻特定的貓。

+0

謝謝,你有沒有什麼好的jQuery引用,我會做一些谷歌搜索,但如果你可以幫助,將不勝感激。 – Ankur 2009-11-15 05:09:49

+0

您使用的是什麼Java Web框架? – cletus 2009-11-15 05:20:25

+0

不使用任何框架,因爲我不知道如何 - 我正在學習Spring - 但同時我只是使用從servlet調用的jsp頁面。當我卡住時,我寫入會話對象。 – Ankur 2009-11-15 05:42:23

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類是包含屬性valuelabel只是你自己的JavaBean類。如果您願意,您也可以使用List<Map<String, String>>

在JSP中可以使用JSTLc:forEach遍歷列表

<select name="foo"> 
    <c:forEach items="${options}" var="option"> 
     <option value="${option.value}">${option.label}</option> 
    </c:forEach> 
</select> 

servlet的最後映射web.xml,因此它匹配調用請求其url-pattern,例如http://example.com/contextroot/page

相關問題