私はAjaxなしでSpring MVC Webアプリケーションを実装しようとしています。Spring MVC Webアプリケーションでリクエスト間にフォームSELECT要素を保持する方法は?
現在、一連のカスケードドロップダウンがあるフォームがあります。後続の選択(ドロップダウン)要素の変更について、前に選択したドロップダウンの項目リストを保持する方法と、後続のドロップダウン要素の項目リストを同時にクリアし、ドロップダウン要素の値をnull
またはデフォルトにリセットする。現在私はデータベースからフェッチされたリスト項目をModelAndView
オブジェクトに入れています。このようにすると、ドロップダウンアイテムは次のリクエストで保持されません。このようなカスケードドロップダウンリスト項目をHttpSession
オブジェクトに入れるのは良い習慣ですか? Spring MVCでこのようなページフローを効率的に処理するには、どうすればよいでしょうか?&続き
は、コントローラの要求ハンドラメソッドである: -
@RequestMapping(value="/add.do",method=RequestMethod.GET,params="actionMethod=beginAddBldg")
public ModelAndView beginAddBuilding(@ModelAttribute("addBuildingFormBean") Building building) {
ModelAndView mv = new ModelAndView("addBldg");
List<Division> lstOfDivisions=buildingService.getDivisions();
mv.addObject("divisionList", lstOfDivisions);
return mv;
}
そして、次のJSPページのコードです: - あなたがそれらを置くことができ
<form:form name="addBuildingForm" modelAttribute="addBuildingFormBean" method="POST">
<form:hidden path="actionMethod"/>
<form:hidden path="actionForward"/>
<table border="1" style="border-collapse:collapse;">
<tr>
<th>
<form:label path="divisionID">
Division
</form:label>
</th>
<td>
<form:select path="divisionID" id="divisionID" onchange="getNextListItems(document.addBuildingForm,'getSubdivs','addBldg','/buildings/add.do');">
<form:option value="-1">--Select--</form:option>
<form:options items="${divisionList}" itemLabel="divisionName" itemValue="divisionID"/>
</form:select>
</td>
<th>
<form:label path="subdivisionID">
Subdivision
</form:label>
</th>
<td>
<form:select path="subdivisionID" id="subdivisionID" onchange="getNextListItems(document.addBuildingForm,'getDistrictsList','addBldg','/add.do');">
<form:option value="-1">--Select--</form:option>
</form:select>
</td>
</tr>
<tr>
<th>
<form:label path="districtID">
District
</form:label>
</th>
<td>
<form:select path="districtID" id="districtID" onchange="getNextListItems(document.addBuildingForm,'getTaluksList','addBldg','/add.do');">
<form:option value="-1">--Select--</form:option>
</form:select>
</td>
<th>
<form:label path="talukID">
Taluk
</form:label>
</th>
<td>
<form:select path="talukID" id="talukID" onchange="getNextListItems(document.addBuildingForm,'getVillagesList','addBldg','/add.do');">
<form:option value="-1">--Select--</form:option>
</form:select>
</td>
</tr>
<tr>
<td colspan="4">
<form:checkbox path="isTown" id="isTown"/>
<form:label path="isTown">
List only Towns (villages with population >= 10,000)
</form:label>
</td>
</tr>
<tr>
<th>
<form:label path="villageCode">
Town/Village
</form:label>
</th>
<td>
<form:select path="villageCode" id="villageCode">
<form:option value="-1">--Select--</form:option>
</form:select>
</td>
</tr>
<tr>
<th>
<form:label path="yearOfConstID">
Year of Construction
</form:label>
</th>
<td>
<form:select path="yearOfConstID" id="yearOfConstID">
<form:option value="-1">--Select--</form:option>
</form:select>
</td>
<th>
<form:label path="buildingTypeID">
Type of Building
</form:label>
</th>
<td>
<form:select path="buildingTypeID" id="buildingTypeID">
<form:option value="-1">--Select--</form:option>
</form:select>
</td>
</tr>
<tr>
<th>
<form:label path="buildingName">
Name of Building
</form:label>
</th>
<td>
<form:input path="buildingName" id="buildingName"/>
</td>
</tr>
<tr>
<th>
<form:label path="noOfFloors">
No. of Floors
</form:label>
</th>
<td>
<form:input path="noOfFloors" id="noOfFloors" maxlength="3"/>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</form:form>
あなたはセッションにあなたのものを置くことができ、それはまったく問題ありません。したがって、リクエストごとに再フェッチする必要はありませんが、セッションの時間に存続します。 – george