通常,为了显示创建新对象的对话框窗口,我定义它并直接在我的 jsp 中调用它。所以我没有任何问题来提供弹簧表单标签的模型属性。
现在我搜索一种编辑对象的方法。我无法直接在我的 jsp 中创建完整的模式。我需要一种方法来创建 jdialog 的一部分,并动态添加另一部分。spring和jquery可以吗?
我的尝试
$('#updateUser').dialog({
autoOpen: false,
height: 660,
width: 715,
modal: true,
buttons: {
"Save": function() {
},
Cancel: function() {
$(this).dialog("close");
}
},
close: function() {
}
});
$("#updateUserButton]").click(function() {
var userName = $(this).closest('tr').data('userName');
$.ajax({
type: "GET",
url: "/secure/admin/ajaxEditingUser",
data: {userame: userName}
}).done(function(data) {
alert(data);
});
$('#updateUser').dialog("open");
});
<div id="updateUser" title="Update user" style="display:none">
<div id="ajaxUserBloc"></div>
</div>
我的 Java 控制器
@RequestMapping(method = RequestMethod.GET, value = "/secure/admin/ajaxEditingUser")
public String showAjaxEditingUser(Model model, @RequestParam("username") String userName){
UserBean userBean = userBeanMap.get(userName);
model.addAttribute("editingUser", userBean);
return "ajaxEditingUserForm";
}
我有一个名为:ajaxEditingUserForm
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<form:form id="userModelForm" modelAttribute="editingUser">
...
</form:form>
控制器被正确调用,我在调试模式下看到它。在 done 方法中,数据是空的......我在想我会得到由 editingUser bean 提供的 ajaxEditingUserForm 的内容
这就像转发到jsp页面没有完成......
试过 $("#ajaxUpdateUserBloc").load("${ajaxEditingUserForm}" + "?username="+userName);
同样的问题
应该像我们在这个例子中看到的那样工作:How to render a View using AJAX in Spring MVC
当我更深入地调试时,我得到:
无法解析名称为“UserServlet”的 servlet 中名称为“ajaxEditingUserForm”的视图
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/web-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>