Так как вы хотите класс сущности оставаться неизменным, я могу думать о двух решений вопроса:
1) Создайте подкласс вашей организации, но не объявим его как единое целое. Вы также можете создать класс-оболочку, принимающий Entity
в качестве параметра конструктора, и непосредственно манипулировать данными об исходном объекте с помощью геттеров и сеттеров. Преимущество подклассификации состоит в том, что наследуют общедоступные методы, но недостатком является необходимость ухода за данными.
Отметьте this answer, почему бы не подклассифицировать сущность как сущность и проблемы с устойчивостью.
public class EntitySubclass extends Entity {
private Entity parent;
public EntitySubclass(Entity parent) {
this.parent = parent;
// set all data from parent to this entity.
}
// fetch the parent object for persistance.
public Entity getParent() {
// set all data from this to parent.
}
public int getTotal() {
int iDidMathOnEntityData = 0;
// do math
return iDidMathOnEntityData;
}
}
JSF:
<p:column headerText="total">
<h:outputText value="#{subClass.total}" />
</p:column>
2) С помощью rowIndexVar
(https://stackoverflow.com/a/5704087/1532705) и вызвать метод управляемого компонента прохождения rowIndexVar
в качестве параметра. Затем выберите соответствующий объект и выполните математику. Requires EL 2.2.
<p:column headerText="total">
<h:outputText value="#{bean.total(rowIndexVar)}" />
</p:column>
управляемый компонент:
public int total(int rowIndexVar) {
int iDidMathOnEntityData = 0;
Entity e = getEntityByIndex(rowIndexVar);
// do some math
return iDidMathOnEntityData;
}
3) если кто-то с той же проблемой не имеет никаких проблем с editting объект, вы можете добавить getTotal()
метод, как @Transient
в:
@Transient
public int getTotal() {
int iDidMathOnEntityData = 0;
// do math
return iDidMathOnEntityData;
}
Добавление его в вашу сущность звучит тривиально: почему вы говорите непрактично? – Romski
@Romski Представьте, что я использую эту сущность на многих страницах. в дополнение к полю _total_, у меня будет 5 или 6 полей, которые относятся к одной странице, еще 3 поля, которые относятся к другой странице и так далее. все эти поля могут быть вычислены из полей объектов. так что еще практично добавить все эти поля в объект? Я так не думаю. –
Можете ли вы опубликовать несколько снимков экрана? –