cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with EVS & calculated attribute

Former Member
0 Kudos

Hi All,

I have 1 EVS & on selection of any value from that EVS ,i have to populate another EVS. Since we don't have any action available for EVS, i made the second attribute calculated. i m able to get the EVS for 2nd field also.

Now the problem is ,when i select value from 2nd evs(where the attribute is calculated), it doesn't set the selected value in the input field.

In the getter method, i have written the code for EVS . there if i return null, it shows blank (quite obvious) , but if i try returning the value from the element(what is passed as parameter to getter method), it shows stackOverFlowError.

can anybody tell what can the problem & what is the solution fro that??

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

What you have written in the setter?

To assign values you need to use the setter.

If setter is not available from the properties of the context attribute set the property readonly false.

Regards

Ayyapparaj

Former Member
0 Kudos

Hi Ayyapparaj,

Thanks for the suggestion,but i have tried that already. this is the getter method

public java.lang.String getFormAttrProtocol(IPrivateStudyDevComp.IFormAttrElement element)

{

//@@begin getFormAttrProtocol(IPrivateStudyDevComp.IFormAttrElement)

//wdComponentAPI.getMessageManager().reportSuccess("value "+value);

IWDAttributeInfo protocolAttrInfo = wdContext.nodeFormAttr().getNodeInfo().getAttribute(IPublicStudyDevComp.IFormAttrElement.PROTOCOL);

ISimpleTypeModifiable protocolId = protocolAttrInfo.getModifiableSimpleType();

protocolId.setFieldLabel(wdThis.wdGetCommUtilsInterface().getMessage("PROTOCOL_ID"));

IModifiableSimpleValueSet valSet = protocolId.getSVServices().getModifiableSimpleValueSet();

ProtocolModel protocolModel = new ProtocolModel();

Request_GetAllProtocols reqModel = new Request_GetAllProtocols(protocolModel);

GetAllProtocols getprot = new GetAllProtocols(protocolModel);

Integer projId = null;

if(null!= element.getProject() && null!= element.getProject() && !("".equals(element.getProject())))

{

for(int j=0;j<wdContext.nodeProject().size();j++)

{

if(element.getProject().equals(wdContext.nodeProject().getProjectElementAt(j).getProjectTag()))

{

projId = wdContext.nodeProject().getProjectElementAt(j).getProjectId();

}

}

if(null!=projId)

{

// int project = Integer.parseInt(element.getProject());

getprot.setProjectId(projId.intValue());

reqModel.setGetAllProtocols(getprot);

wdContext.nodeRequest_GetAllProtocols().bind(reqModel);

executeRequest_GetAllProtocols();

}

}

valSet.clear();

if(null!= wdContext.nodeProtocol())

{

for(int i=0;i<wdContext.nodeProtocol().size();i++)

{

valSet.put(wdContext.nodeProtocol().getProtocolElementAt(i).getProtocolTag(),wdContext.nodeProtocol().getProtocolElementAt(i).getTitle());

}

}

//logger.fatalT("protocol = "+ wdContext.nodeFormAttr().currentFormAttrElement().getProtocol());

return element.getProtocol() //@@end

}

the problem is its not goin to setter itself. as soon as i try to access "element" , it shows stackOverFlowError. If i return null from getter then screen comes up but as soon as i select something in 1st EVS, it goes to setter but throws same error. this is the stack trace :

#

#1.5#0016E66629BC005D0000002F0000020000043EE36E8D66B3#1195046440146#com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl#sap.com/tcwddispwda#com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl#Guest#2####650b9a2092b411dc81610016e66629bc#SAPEngine_Application_Thread[impl:3]_25##0#0#Error#1#/System/Server/WebRequests#Plain###Processing HTTP request to servlet [dispatcher] finished with error.

The error is: java.lang.StackOverflowError: null

Exception id: [0016E66629BC005D0000002D0000020000043EE36E8D3461]#

#1.5#0016E66629BC005D000000300000020000043EE36E8DBCFD#1195046440161#com.sap.engine.services.servlets_jsp.client.RequestInfoServer#sap.com/tcwddispwda#com.sap.engine.services.servlets_jsp.client.RequestInfoServer#Guest#2####650b9a2092b411dc81610016e66629bc#SAPEngine_Application_Thread[impl:3]_25##0#0#Error##Plain###Cannot send an HTTP error response [500 Application error occurred during request processing. (details: java.lang.StackOverflowError: null)]. The error is: com.sap.engine.services.servlets_jsp.server.exceptions.WebIOException: An attempt to write after the stream had been closed.

at com.sap.engine.services.servlets_jsp.server.runtime.client.GzipResponseStream.write(GzipResponseStream.java:209)

at com.sap.engine.services.servlets_jsp.server.runtime.client.GzipResponseStream.write(GzipResponseStream.java:193)

at com.sap.engine.services.servlets_jsp.server.runtime.client.HttpServletResponseFacade.writeError(HttpServletResponseFacade.java:982)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.sendError(HttpHandlerImpl.java:973)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleGeneralException(HttpHandlerImpl.java:878)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.processError(HttpHandlerImpl.java:869)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:412)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:174)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

#

#1.5#0016E66629BC005D000000320000020000043EE36E8DC10D#1195046440161#com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl#sap.com/tcwddispwda#com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl#Guest#2####650b9a2092b411dc81610016e66629bc#SAPEngine_Application_Thread[impl:3]_25##0#0#Error#1#/System/Server/WebRequests#Plain###Cannot send an HTTP error response [500 Application error occurred during request processing. (details: java.lang.StackOverflowError: null)].

The error is: com.sap.engine.services.servlets_jsp.server.exceptions.WebIOException: An attempt to write after the stream had been closed.

Exception id: [0016E66629BC005D000000300000020000043EE36E8DBCFD]#

error comes where i m trying to access the "element" either in getter or in setter.

Apart from that , another problem is from the 1st evs ,when i select any value, its not populating the 2nd evs. i have to select value 2 times from the 1st evs to get the 2nd evs populated.

regards

Sumit

Message was edited by:

Sumit Malhotra

Former Member
0 Kudos

Hi All,

Any idea what can be the problem???

regards

Sumit