我是Spring MVC的新手,所以请对我放轻松。
我很难理解如何在Spring MVC中实现以下要求:
用户列表.jsp
<spring:url value="strFormAction" var="/rest/security/user/list" />
<form:form id="userListForm" method="GET" action="${strFormAction}" modelAttribute="user">
<form:select id="strRegionId" path="${strRegionId}" cssClass="form-control" onchange="updateUsersList('1');">
<spring:message var="strSelectRegionLabel" code="select.region" />
<form:option value="0" label="${strSelectRegionLabel}" />
<form:options items="${regions}" itemValue="intId" itemLabel="strNameFr" />
</form:select>
<form:select id="strArchived" path="${strArchived}" cssClass="form-control">
<spring:message var="strYesLabel" code="yes" />
<form:option value="true" label="${strYesLabel}"/>
<spring:message var="strNoLabel" code="no" />
<form:option value="false" label="${strNoLabel}"/>
</form:select>
<table>
...
<c:forEach items="${users}" var="user">
...rows generated here...
</c:forEach>
...
</table>
</form:form>
用户控制器.java
@RequestMapping(value = "/html" target="_blank">list", method = RequestMethod.GET)
public String processUserList( @ModelAttribute("user") User user,
@RequestParam(value = "strRegionId", required = false) String strRegionId,
@RequestParam(value = "strArchived", required = false) String strArchived,
@RequestParam(value = "strSortBy", required = false) String strSortBy,
Model model) {
int intRegionId = strRegionId != null && strRegionId.equals("0") == false ? Integer.valueOf(strRegionId) : 0;
boolean booArchived = strArchived != null && strArchived.length() > 0 ? Boolean.valueOf(strArchived) : false;
int intSortBy = strSortBy != null && strSortBy.length() > 0 ? Integer.valueOf(strSortBy) : 1;
List<Region> regions = this.locationService.lstRegions();
model.addAttribute("strRegionId", String.valueOf(intRegionId));
model.addAttribute("strArchived", String.valueOf(booArchived));
model.addAttribute("strSortBy", String.valueOf(intSortBy));
List<User> users = this.securityService.listUsersByRegionAndArchiveState(intRegionId, booArchived, intSortBy);
model.addAttribute("user", new User());
model.addAttribute("users", users);
model.addAttribute("regions", regions);
return "user/userList";
}
似乎如果不在表单中提供模型属性,我根本无法使用 Spring 表单标签库。然后我从我的控制器中放置了一个虚拟的模型属性,但现在我得到:
javax.servlet.ServletException: javax.servlet.jsp.JspException: org.springframework.beans.NotReadablePropertyException: bean class [spring4base.model.security.User] 的无效属性 '0': Bean 属性 '0' 不可读或具有无效的 getter 方法: getter 的返回类型是否与 setter 的参数类型匹配?
正如我之前所说,该页面并不意味着由任何特定的POJO支持。这是一个搜索页面,必须根据之前选择的过滤器(区域、存档状态)返回用户列表(用户实体 bean)。每次更改下拉列表时,表单都必须自行提交(用户选择一个区域,在同一映射上完成提交,然后用户列表重新加载,仅包含来自该特定区域的用户)。
我来自Struts 1,我们需要为每个页面创建ActionForm。从我从文档中读到的内容来看,这些天不需要表单,所以我真的很期待解决这个问题。
任何帮助将不胜感激。
我只会创建包含您的搜索条件的辅助类,例如:
public class UserSearchCriteria {
private String regionId;
private Boolean archived;
private String sortBy;
// Getters and setters
}
然后我会像这样修改你的控制器方法(缺少一些代码,但这应该给你这个想法)。
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String processUserList(@ModelAttribute("searchCriteria") UserSearchCriteria userSearchCriteria, Model model) {
// Retrieve users and perform filtering based on search criteria
List<User> users = this.securityService.listUsers(searchCriteria);
model.addAttribute("users", users);
model.addAttribute("regions", regions);
return "user/userList";
}
然后,您将像这样使用过滤表单:
<spring:url value="/rest/security/user/list" var="formAction" />
<form:form id="userListForm" method="GET" action="${formAction}" modelAttribute="searchCriteria">
<form:select path="regionId" cssClass="form-control" onchange="updateUsersList('1');">
<spring:message var="strSelectRegionLabel" code="select.region" />
<form:option value="0" label="${strSelectRegionLabel}" />
<form:options items="${regions}" itemValue="intId" itemLabel="strNameFr" />
</form:select>
<form:select path="archived" cssClass="form-control">
<spring:message var="strYesLabel" code="yes" />
<form:option value="true" label="${strYesLabel}"/>
<spring:message var="strNoLabel" code="no" />
<form:option value="false" label="${strNoLabel}"/>
</form:select>
您的代码段中的表单中有几个错误。例如,path
属性采用包含要绑定到的属性的名称(或路径)的字符串,您正在向其传递一些变量。此外,您有值
和变量
切换了您的
试试吧,这不是完整的解决方案,但希望它能为您提供有关如何实现此解决方案的一些指导。如果您遇到任何问题,请发表评论,我会更新答案。
我用的是IntelliJ IDEA Pro 13.1.2。从未使用过13以下的任何版本。 当试图从IDE运行时,我得到以下消息:
我想将模型数据列表发送到springMVC。 基本思想是: 创建一个包装器 Java POJO 以包含目标 POJO 的列表作为字段。 然后使用 获取请求参数。 HTML代码:(单一模型的) SportsFieldListWrapper.java: 控制器方法: 运动场.java: 我试图创建一个可重用的通用包装器,这样就避免了为每种类型创建一个包装器。 ListParamWrapper.java
ModelForm class ModelForm 如果你正在构建一个数据库驱动的应用,那么你应该会有与Django 的模型紧密映射的表单。举个例子,你也许会有个BlogComment 模型,并且你还想创建一个表单让大家提交评论到这个模型中。 在这种情况下,在表单中定义字段将是冗余的,因为你已经在模型中定义了字段。 基于这个原因,Django 提供一个辅助类来让你可以从Django 的模型创建表单
本文向大家介绍简述JavaScript对传统文档对象模型的支持,包括了简述JavaScript对传统文档对象模型的支持的使用技巧和注意事项,需要的朋友参考一下 这是将其在JavaScript语言早期版本中引入的模型。大家都被所有浏览器都支持,但只允许访问文件的某些关键部分,如表单,表单元素和图像。 该模型提供了若干个只读属性,如标题,URL和上次更改提供关于文档整体的信息。除了有由该模型可用于设
这以前适用于.NET 4.6上的ASP.NET MVC 5。
问题内容: 我正在尝试实现朴素的高斯,并在执行时遇到不受支持的操作数类型错误。输出: 这是代码 问题答案: 您不能从列表中减去列表。 简单的方法是使用: 您也可以使用列表推导,但需要在函数中更改代码:
Threejs所谓模型,如果你使用过三维软件,就是你三维软件中常说的三维模型,当然了,对于大多数前端程序员而言,不了解计算机图形学的情况下,没有使用过任何三维软件的情况下,并没有三维模型的概念。从Three.js角度来说,Threejs模型对象就是由Threejs几何体Geometry和Threejs材质Material构成,材质主要设置三维模型的颜色等外观样式,几何体主要是通过顶点坐标数据表达三
SHA 所有用来表示项目历史信息的文件,是通过一个40个字符的(40-digit)“对象名”来索引的,对象名看起来像这样: 6ff87c4664981e4397625791c8ea3bbb5f2279a3 你会在Git里到处看到这种“40个字符”字符串。每一个“对象名”都是对“对象”内容做SHA1哈希计算得来的,(SHA1是一种密码学的哈希算法)。这样就意味着两个不同内容的对象不可能有相同的“对