我有一个用于网格中每一行的类,它是多个实体数据的混合。问题是放在哪里?我尝试将类放在组件包中并在我的页面中实例化它,尝试从注入的服务返回类,并将类嵌套在页面 POJO 中。在所有情况下,它都会工作一次,然后在刷新时出现此错误:
Failure writing parameter 'row' of component admin/Add:grid.rows: Failure writing parameter 'row' of component admin/Add:grid: Could not find a coercion from type com.foo.bar.pages.admin.Add$RolesRow to type com.foo.bar.pages.admin.Add$RolesRow.
我能想到的一个错误几乎没有帮助。我知道 Tapestry 希望您注入所有依赖项,但我还没有想出使用什么模式来注入您要即时实例化的类。
编辑:这是课程
public static class RolesRow{
@Property public Boolean ROLE_SUPER;
@Property public Boolean ROLE_ADMIN;
@Property public Boolean ROLE_USER;
@Property public Boolean ROLE_VIEW;
@Property public Boolean ROLE_EMAIL;
private Map<String,Role> roles;
public RolesRow(){
}
public RolesRow(Map<String,Role> roles){
ROLE_SUPER = (roles.containsKey("ROLE_SUPER") ? true:false);
ROLE_ADMIN = (roles.containsKey("ROLE_ADMIN") ? true:false);
ROLE_USER = (roles.containsKey("ROLE_USER") ? true:false);
ROLE_VIEW = (roles.containsKey("ROLE_VIEW") ? true:false);
ROLE_EMAIL = (roles.containsKey("ROLE_EMAIL") ? true:false);
this.roles = roles;
}
public List<Role> selected(){
List<Role> r = new ArrayList<Role>();
checked(r,"ROLE_SUPER",ROLE_SUPER);
checked(r,"ROLE_ADMIN",ROLE_ADMIN);
checked(r,"ROLE_USER",ROLE_USER);
checked(r,"ROLE_VIEW",ROLE_VIEW);
checked(r,"ROLE_EMAIL",ROLE_EMAIL);
return r;
}
private void checked(List<Role> r,String field,Boolean obj){
if (obj !=null && obj == true){
r.add(roles.get(field));
}
}
我在 setupRender 中实例化记录:
void setupRender(){
List<RolesRow> list = new ArrayList<RolesRow>();
list.add(new RolesRow());