【发布时间】:2013-12-24 01:43:21
【问题描述】:
为了更好地理解我的问题,请查看下面的 JSP 代码。
<c:forEach var="technologyLocation" items="${model.technologyLocationList}" varStatus="loop">
<form:input path="technologyLocationList[${loop.index}].location"/>
</c:forEach>
在我的 spring pojo 代码中,Technology 和 TechnologyLocation 之间的关系是 OneToMany。 上面的代码将呈现输入元素的数量等于数据库中可用的位置数据的数量,并且输入元素的路径属性值正确。
我的问题是:
如果数据库中没有可用的 TecnologyLocation 记录,我不知道如何呈现表单输入元素。因为在这种情况下,需要使用正确的路径属性值渲染空输入元素。这样用户就可以输入新的位置以在数据库中持久化。
如果数据库中存在记录,则除了可用的位置输入元素外,还显示一个空输入元素,以便用户可以更新现有的并保存新的。
请建议我如何使用有效的路径属性值来实现这一点!
我正在使用 spring 和 hibernate 来使用注释来持久化数据。
提前致谢!
请看下面的相关部分代码!
Technology.java
public class Technology{
.
.
private List<TechnologyLocation> technologyLocationList = new ArrayList<TechnologyLocation>(0);
.
.
@OneToMany(fetch = FetchType.LAZY, mappedBy = "technology")
public List<TechnologyLocation> getTechnologyLocationList() {
return technologyLocationList;
}
public void setTechnologyLocationList(List<TechnologyLocation> technologyLocationList) {
this.technologyLocationList = technologyLocationList;
}
}
TechnologyLocation.java
public class TechnologyLocation{
.
@NotNull
private Technology technology;
public TechnologyLocation(Technology technology) {
this.technology = technology;
}
@ManyToOne
@JoinColumn(name="technology_id")
public Technology getTechnology()
{
return technology;
}
public void setTechnology( Technology technology )
{
this.technology = technology;
}
@Column(name="technology_location")
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
}
TechnologyController.java
public class TechnologyController{
// Problem in getting better way to get new technology location from JSP. I don't want like request.getPrameter(paramname). I want to use power of hibernate with spring, something like form input element with path attribute for accepting new entry for location from jsp
}
Technology.jsp
<div>
<span>Location</span>
<c:forEach var="technologyLocation" items="${model.technologyLocationList}" varStatus="loop">
<form:input path="technologyLocationList[${loop.index}].location"/>
</c:forEach>
<!--Confusion: If list size is zero, I need to show empty form input element for entering new location-->
<form:input path="some thing should be like technologyLocationList?.location so that we can use power of hibernate"/>
</div>
【问题讨论】:
标签: hibernate jsp spring-mvc annotations jstl