2012-01-29 13 views
1

私は、ページ上にループするコレクションプロパティを含むフォームバッキングオブジェクトを持つページを持っています。削除ボタンをクリックしてコレクションのアイテムを削除するオプションをユーザに与えたいと思います。しかし、コレクションの各アイテムには削除ボタンがあるので、どの削除ボタンがコントローラで押されたのか分かりません。基本的に私はどの削除ボタンが押されたのか知る必要があるので、どの質問を削除すべきか分かります。これについて最善の方法は何ですか?下の私のページをご覧ください。Springフォームコレクションの削除依頼

<%@ include file="/WEB-INF/jsp/taglibs.jsp" %> 

<sf:form method="POST" modelAttribute="surveyInfo" > 

<table id="glossarysearchtable-full" border="0" cellpadding="0" cellspacing="0">    
      <tr align="left"> 
       <td class="searchResultTitle" colspan="2"> 
        Schedule Number ${surveyInfo.surveyNumSch}      
        <input type="submit" class="small-short inner2" value="Save" alt="Save" title="Save" /> 
        <input type="button" class="small-short inner2" value="Print" alt="Print" title="Print" /> 
        <input type="button" class="small-short inner2" value="Remove" alt="Remove" title="Remove" /> 
        <sf:input type="hidden" path="id" id="id" cssClass="inputbox-survey" maxlength="100" size="100" /> 
        <sf:input type="hidden" path="surveyTitle" id="surveyTitle" cssClass="inputbox-survey" maxlength="100" size="100" /> 
        <sf:input type="hidden" path="surveyName" id="surveyName" cssClass="inputbox-survey" maxlength="100" size="100" /> 
      </tr>         

      <c:forEach items="${surveyInfo.allSurveyQuestions}" var="surveyQuestion" varStatus="status"> 

        <tr align="left"> 
         <td class="searchResultTitle" colspan="2"> 
          Question ${status.count} <input type="submit" class="small-short inner2" value="Remove${status.count}" alt="Remove" title="Remove" /> 
          <sf:input type="hidden" path="allSurveyQuestions[${status.index}].questionId" id="questionId${status.count}" cssClass="inputbox-survey" maxlength="100" size="100" /> 
          <sf:input type="hidden" path="allSurveyQuestions[${status.index}].id" id="id${status.count}" cssClass="inputbox-survey" maxlength="100" size="100" /> 
         </td> 

        </tr>  

        <tr class="altrow" align="left"> 
         <td height="20">Text:</td> 
         <td><sf:input path="allSurveyQuestions[${status.index}].questionText" id="questionText${status.count}" cssClass="inputbox-survey" maxlength="100" size="100" /></td> 
        </tr> 

      </c:forEach> 
</table>  
</sf:form> 
+0

jQuery Ajaxを使用してクリックしたアイテムを削除することを考えましたか?このルートに行くと、クリックされた要素のIDを使用し、そのIDをバックエンドに送信して削除することができます。 – Stealth

答えて

1

まあ、私はまた私のフォームのバッキングオブジェクトである私のドメインオブジェクトにisDeletedというプロパティを作成し、ページ上のレコードごとにバインドされたチェックボックスを作成されたなかったものを、私の問題を解決しました。ユーザーがチェックボックスまたはチェックボックスをクリックして保存すると、コントローラーはチェックボックスの値をチェックし、toBeSavedとtoBeDeletedの2つの異なるコレクションにデータを設定します。未チェックのレコードは保存され、チェックされたレコードはデータベースから削除されます。

私はjqueryルート経由でこれを行うには多くのオプションを見ましたが、私はまだjqueryを学んでおり、サーバー側でそれをやりたいと思っています。

関連する問題