Java 挂毯,圈内区域

Java 挂毯,圈内区域,java,apache,tapestry,Java,Apache,Tapestry,我还有一个大问题。我有组件、区域和刷新区域的表单。当我将组件放入循环中时,它只显示最后一个区域。我为每个区域生成了唯一的ID。在PageSource中,我可以看到每个区域都获得了正确的ID,但它不会在提交时返回正确的ID。是否有按id返回区域的方法 这是我的密码: 评论 公共类注释 { @参数(必需=真) @财产 私人内部资料; @会话状态 @财产 私人用户; @注入 非公开会议; @财产 私有字符串注释; @注射组分 私家区; @委托人 从Komentar(int materij

我还有一个大问题。我有组件、区域和刷新区域的表单。当我将组件放入循环中时,它只显示最后一个区域。我为每个区域生成了唯一的ID。在PageSource中,我可以看到每个区域都获得了正确的ID,但它不会在提交时返回正确的ID。是否有按id返回区域的方法

这是我的密码:


评论


公共类注释
{   
@参数(必需=真)
@财产
私人内部资料;
@会话状态
@财产
私人用户;
@注入
非公开会议;
@财产
私有字符串注释;
@注射组分
私家区;
@委托人
从Komentar(int materijalID)成功访问的公共对象
{
科门塔k=新科门塔();
日期d=新日期();
Materialjal m=(Materialjal)会话
.createCriteria(材料类)
.add(Restrictions.eq(“materialjalid”,materialjalid))
.list()
.get(0);
k、 Setmaterialjal(m);
k、 setKorisnikID(this.user.getID());
k、 setDatumUnosa(d);
k、 setDatumModifikacije(d);
k、 setKomentar(本评论);
session.save(k);
this.comment=“”;
返回此.commentZone.getBody();
}
公共字符串getZoneId()
{ 
返回“Zone_”+this.materialjalid;
} 
} 

提前感谢

问题很可能是您传递到commentList中的MaterialID与作为@参数传递的相同。这意味着封装组件将为您设置此值。在循环的情况下,这很可能始终是渲染阶段之后的最后一个循环

解决方案在于解耦此传递。大致如下:


评论


公共类注释
{   
@参数(必需=真)
@财产
私人内部资料;
@财产
私有int passThroughMaterijalID;
@会话状态
@财产
私人用户;
@注入
非公开会议;
@财产
私有字符串注释;
@注射组分
私家区;
@设置渲染
私有无效设置(){
this.passThroughMaterijalID=materialjalid;
}
@委托人
从Komentar(int materijalID)成功访问的公共对象
{   
this.passThroughMaterijalID=materialjalid;
科门塔k=新科门塔();
日期d=新日期();
Materialjal m=(Materialjal)会话
.createCriteria(材料类)
.add(Restrictions.eq(“materialjalid”,materialjalid))
.list()
.get(0);
k、 Setmaterialjal(m);
k、 setKorisnikID(this.user.getID());
k、 setDatumUnosa(d);
k、 setDatumModifikacije(d);
k、 setKomentar(本评论);
session.save(k);
this.comment=“”;
返回此.commentZone.getBody();
} 
公共字符串getZoneId()
{ 
返回“Zone_”+this.materialjalid;
} 
} 

您是否尝试过在
提交中设置
t:defer=“false”

亨宁回答了一个类似的问题