根据我几天前发布的问题,我意识到这SimpleFormController
不适合处理 Ajax 请求。因此,我正在将我的应用程序迁移到带注释的控制器。
我正在尝试使用Jackson 1.9.8(其下载页面java.util.List
)通过 Ajax 使用 Spring MVC 3.0.2 和 Hibernate 从 Oracle 数据库返回一个,但我还没有在任何技术中使用 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
Spring 控制器类中的方法,当在国家选择框的事件上发出 Ajax 请求时调用。
@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
在前面<c:forEach><c:forEach>
循环的属性中使用 Ajax 响应,例如items="${stateList}"
?
你能给我一些提示/想法我如何返回数据列表并在前面的循环中使用它来填充状态选择框?你能从这里带我走几步吗?
我使用的是 NetBeans 6.9.1(不是 Eclipse)。在一些关于 Eclipse 中 Marvan 项目的教程中,提到该pom.xml
文件需要配置为包含<dependencies></dependencies>
(Jackson 依赖项)。pom.xml
在我的 NetBeans 项目中没有这样的东西。是否需要在 NetBeans 中的某个 xml 文件中的某个位置进行配置,例如此处提到的那个?