At the first sight we thought of extending the ViewObject and adding a transient attribute.But that seems to be very complex process as this ViewObject is based on 5 EntityObjects.
So we thought of some workaround and come to a solution by adding a ViewAttribute in ViewObect dynamically.Here is the approach …
We have extended the Controller and add a ViewAttribute dynamically in the ViewObject and created a MessageStyledText bean through personalization.
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processRequest(pageContext, webBean);
OAApplicationModule am = (OAApplicationModule)pageContext.getApplicationModule(webBean);
OAViewObject vo = (OAViewObject)am.findViewObject("AllocationsVO1");
if (vo != null)
{
vo.addDynamicAttribute("XXSalary"); //Adding ViewAttribute to VO
}
vo.reset();
vo.next();
//Starting do-while for setting value in all the table row...
do
{
//Doing some calculation...
int xxnumber = Integer.parseInt(vo.getCurrentRow().getAttribute("Empno").toString());
double d = xxnumber*(17.5/100)/2;
String aString = Double.toString(d);
//Setting the calculated derived value in the newly created VO Attribute
vo.getCurrentRow().setAttribute("XXSalary", aString);
vo.next();
}
while (vo.hasNext());
vo.first();
//Finally adding ViewAttribute and ViewInstance with MessageTextInput bean which we have created through personalization
OAMessageTextInputBean mst = (OAMessageTextInputBean)webBean.findChildRecursive("Salary");
mst.setViewUsageName("AllocationsVO1");
mst.setViewAttributeName("XXSalary");
mst.setReadOnly(true);
}
Thanks
--Anil