在Primefaces中显示嵌套bean,JSF webapp

时间:2012-08-23 17:03:13

标签: java spring jsf primefaces

在我的JSF页面中,我有以下内容:

<h:outputText value="#{entity[column.key]}" />

我的enity bean(简单版):

public class Entity implements Serializable {
private int id;
private Entity entity;

public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}

public Entity getEntity() {
    return this.entity;
}
public void setEntity(Entity entity) {
    this.entity = entity;
}
}

当我的[column.key]变量保持为值'id'时,将显示实体的id属性。 当我的[column.key]变量保持为值'entity.id'时,我收到一个错误:

  

/WEB-INF/flows/parametersPage/parametersPage.xhtml @ 51,66 value =“#{entity [column.key]}”:在类型eu.acsone.agc.db上找不到属性'entity.id' .entity.Entity

当我调试时,我看到实体是在bean中设置的,所以它不是null。

我希望你们能帮忙,谢谢!

我正在使用: * Mojarra 2.1.7 * Primefaces 3.3.1

1 个答案:

答案 0 :(得分:2)

它的原因是你没有属性(在java中实际上是非法的 - 不允许使用点分隔符)

private int entity.id; //its not even legal

在你的bean

当您尝试像value="#{entity[variableThatHoldSomeString]}":

那样访问您的bean时

JSF将在您的bean中查找属性SomeString ...这就是您收到此错误的原因 试试这样的事情

value="#{entity.entity[column.key]}":

其中[column.key]变量将包含值'id',

(b.t.w相同类型的嵌套属性对我来说很奇怪)