2014-07-21 52 views
0

這裏我的問題檢索到的項目: 我有下面的代碼.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,但它與檢查的項目正確相關。但是這個數組中的所有元素都是「」。

有人有類似的問題嗎?有關這個問題的任何想法?錯誤在哪裏?

在此先感謝。

回答

1

嘗試更換JSP這部分代碼:

<% KeyFactory.keyToString(notice.getKey()); %> 

通過這一個:

<%= KeyFactory.keyToString(notice.getKey()) %> 

,因爲你要插入的表達式的值。

+0

絕對有效。愚蠢的錯誤。我想象中:)謝謝! – mattd