数日前に投稿した質問に基づいて、 SimpleFormController
Ajaxリクエストの処理には不適切であることに気付きました。したがって、アプリケーションを注釈付きコントローラーに移行しています。
java.util.List
Spring MVC 3.0.2を使用してOracleデータベースから、Jackson 1.9.8(ダウンロードページ)を使用してAjax経由でHibernateを使用してを返そうとしていますが、どのテクノロジでもJSONを使用していません。いくつかのチュートリアル/記事を読みましたが、そのような複雑なデータ構造を返し、SpringでJSONを使用してそれらを解析する方法がわかりませんでした。私は最初にJSONのような概念を学ぼうとしています。
基本的に私が試しているのは、国を選択ボックスから選択した場合、その国に対応する州がAjaxを介してデータベースから入力される必要があるということです。java.util.List
Ajax応答を返す方法、それを解析してJavaコードで再び使用する方法について正確な考えはありません。私は次のレベルまでしかありません。
JSコード。
function getStates(countryId)
{
$.ajax({
datatype:"json",
type: "POST",
url: "/wagafashion/ajax/TempAjax.htm",
data: "countryId=" + countryId,
success: function(response)
{
$('#msg').html(response);
$('#stateList').val('');
},
error: function(e)
{
alert('Error: ' + e);
}
});
}
onchange
国選択ボックスのイベントでAjaxリクエストが行われたときに呼び出されるSpringコントローラークラスのメソッド。
@RequestMapping(method=RequestMethod.POST, value="ajax/TempAjax")
public @ResponseBody List<StateTable> getStateList(@ModelAttribute("tempBean") TempBean tempBean, BindingResult error, Map model, HttpServletRequest request, HttpServletResponse response)
{
Session session=NewHibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<StateTable>list=session.createQuery("from StateTable where country.countryId=:countryId order by stateId").setParameter("countryId", new BigDecimal(request.getParameter("countryId"))).list();
session.flush();
session.getTransaction().commit();
return list;
}
<c:forEach></c:forEach>
ELのループを使用してAjax応答によって返される状態のリストを入力する必要がある状態選択ボックス。
<form:select path="cmbState" class="validate[required] text-input tooltip" title="Mandatory select field.">
<form:option value="">Select</form:option>
<c:forEach items="${stateList}" var="row">
<c:choose>
<c:when test="${row.stateId==param['stateId'] and deselectCombo!=1}">
<form:option value="${row.stateId}" selected="selected">${row.stateName}</form:option>
</c:when>
<c:otherwise>
<form:option value="${row.stateId}">${row.stateName}</form:option>
</c:otherwise>
</c:choose>
</c:forEach>
</form:select>
<font style="color: red"><form:errors path="stateId"/></font><br/>
私はAjaxのリクエストとレスポンスを成功させることしかできませんでした。インターネット上で見つかったチュートリアルからは、これ以上理解できませんでした。より正確には、前のループのitems
属性でAjax応答をどのように使用できますか?<c:forEach><c:forEach>
items="${stateList}"
データのリストを返し、それを前のループで使用して状態選択ボックスにデータを入力するには、ヒント/アイデアを教えてください。ここから少し先に進んでください。
NetBeans 6.9.1(Eclipseではない)を使用しています。EclipseのMarvanプロジェクトに関するいくつかのチュートリアルでは、pom.xml
ファイルを含めるように構成する必要があると述べられていました<dependencies></dependencies>
(Jackson依存関係)。pom.xml
NetBeansの私のプロジェクトのようなものはありません。ここで説明したようなNetBeansのxmlファイルのどこかに設定する必要がありますか?