這裏我的問題檢索到的項目: 我有下面的代碼.jsp文件:的AppEngine/Java的:刪除複選框
form class="form" action="deleteServlet" method="post">
<%
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query query = new Query("Notice").addSort("date", Query.SortDirection.DESCENDING);
PreparedQuery pq = datastore.prepare(query);
for (Entity notice : pq.asIterable()) {
String title = (String) notice.getProperty("title");
%>
<input type="checkbox" name="selected"
value=" <% KeyFactory.keyToString(notice.getKey()); %> " >
<%out.println(title);
} %>
<input type="submit" value="Delete!">
</form>
我做的AppEngine數據存儲上的查詢來獲取項目的列表。我需要用複選框顯示每個項目,方式是用戶可以選擇其中一些並從數據存儲中刪除它們。 邏輯進行管理使用一個Servlet,以這種方式:
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
String[] noticesChecked = req.getParameterValues("selected");
for (int i=0; i<noticesChecked.length; i++) {
Key noticeKey = KeyFactory.stringToKey(noticesChecked[i]);
datastore.delete(noticeKey);
}
我得到的,使用getParameterValues,所選項目的陣列。然後,我對它們進行迭代,並嘗試從數據存儲中刪除它們。 由於我無法傳遞給一個Key對象的一個servlet,因此我使用KeyFactory.keyToString和KeyFactory.stringToKey將其轉換爲String並將其傳遞。
我的問題是noticesChecked中的元素都是空的String「」。 我檢查並notice.getKey給我正確的關鍵。 keyToString和stringToKey似乎也很好。對數組大小的檢查告訴我這不是null,但它與檢查的項目正確相關。但是這個數組中的所有元素都是「」。
有人有類似的問題嗎?有關這個問題的任何想法?錯誤在哪裏?
在此先感謝。
絕對有效。愚蠢的錯誤。我想象中:)謝謝! – mattd