我正在尝试使用struts2和hibernate一对多关系显示来自两个表Activites和Favorites的值
//Activities
@Entity
@Table(name="ACTIVITIES")
@OneToMany(fetch = FetchType.EAGER, mappedBy = "activities" , targetEntity=Favorites.class, cascade=CascadeType.ALL )
public Set<Favorites> getFavorites() {
return favorites;
}
public void setFavorites(Set<Favorites> favorites) {
this.favorites = favorites;
}
@Id
@GeneratedValue
@Column(name="ACTIVITYID")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
//Favorites
@Entity
@Table(name="Favorites")
@ManyToOne(optional=false)
public Activities getActivities() {
return this.activities;
}
和其他字段
在jsp中:
<s:iterator value="activityList" id="activityList" status="activityStatus" <s:hidden id="activityList" name="activityList[%{#activityStatus.index}].id" />
<s:iterator value="favorites" var="fav" status="myStat">
<s:checkbox id="accFavorities" name="accFavorities"/></td>
<s:iterator>
但是当提交时,我从活动表中获取了id,但没有获取值收藏夹表格,这是复选框。
在我的动作类中
for (Activities al : activityList) {
for (Favorites ss : al.getFavorites()) {
System.out.println(ss.getCompany());
System.out.println(ss.getAccFavorities());
}
}
在jsp中我尝试了下面这样的事情,在这种情况下,数据库本身的值不会出现
<s:iterator value="%{favorites}" id="fav" status="myStat">
<s:checkbox id="accFavorities" value="activityList[%{#activityStatus.index}].fav[%{#myStat.index}].accFavorities"/></td>
非常感谢任何帮助。
感谢
答案 0 :(得分:0)
您必须定义复选框,以便在浏览器提交表单时,参数名称与预期的bean结构匹配。
也许您可以尝试http://struts.apache.org/2.2.1/docs/struts-2-form-tags.html#Struts2FormTags-Struts2CheckboxTag
中显示的“key”属性