我请求了一个应该为用户填充对象的页面,但返回的页面是空的。
请求的控制器
@RequestMapping(value = "/main/user/testing", method = RequestMethod.GET)
public String getRecords(@RequestParam("userId") Integer userId, ModelMap
model) {
if(userId !=null)
{
UserEntity user = userService.getUserByID(userId);
model.addAttribute("setter", user);
}
return "/main/user/testing";
}
要检索的父项和关联子项的模型
UserEntity
public class UserEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "user_id")
private Integer userId;
@Column(name = "name")
private String name;
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="checker_id")
private UserEntity checker;
@OneToMany(mappedBy="checker", orphanRemoval=true, cascade = CascadeType.ALL)
private Set<UserEntity> setters = new HashSet<UserEntity>();
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="setter")
private Set<Module> sModule = new HashSet<Module>();
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="checker")
private Set<Module> cModule = new HashSet<Module>();
模块
public class Module implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "module_id")
private Integer moduleId;
@Column(name = "module_code")
private String moduleCode;
@Column(name = "module_name")
private String moduleName;
因此,在控制器处,我使用用户ID作为参数,我希望它返回与用户关联的模块。
返回页面本身,但它只有表格标题,而不是数据库中的值。
请求的页面
<table>
<tr>
<th>User Id</th>
<th>Name</th>
<th>Module Code</th>
<th>Module Name</th>
</tr>
<c:forEach items="${setter}" var="obj" >
<c:forEach items="${obj.sModule}" var="module" >
<tr>
<td><c:out value="${obj.userId}" escapeXml="true" /></td>
<td><c:out value="${obj.name}" escapeXml="true" /></td>
<td><c:out value="${module.moduleCode}" escapeXml="true" /></td>
<td><c:out value="${module.moduleName}" escapeXml="true" /></td>
</tr>
</c:forEach>
</c:forEach>
</table>
有没有理由发生这种情况?
答案 0 :(得分:1)
c:foreach是否可以处理单个对象?您只返回一个用户。要么摆脱模板中的循环,要么将用户实体包装在列表中,并将该列表放入setter变量中。