on 06-27-2005 10:32 AM
hi experts,
i have added one ui element of upload in my view.i have written correponding code in the init() and in upload action.but after attaching the corresponding file from the desktop pc ,when i was clicking on upload button it was giving the following error.
Error stacktrace:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1438)
at com.sap.tc.webdynpro.services.sal.util.cache.ResourcePool.getKeyFromUrl(ResourcePool.java:215)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.datatransport.DataTransportFactory.getOutputMassDatasource(DataTransportFactory.java:76)
at com.sap.tc.webdynpro.services.sal.datatransport.core.InternalMassDataTransport.getOutputMassDatasource(InternalMassDataTransport.java:41)
at com.sap.tc.webdynpro.progmodel.context.ModifiableBinaryType.parse(ModifiableBinaryType.java:101)
at com.sap.tc.webdynpro.clientserver.data.DataContainer.doParse(DataContainer.java:1268)
at com.sap.tc.webdynpro.clientserver.data.DataContainer.validatePendingUserInput(DataContainer.java:1167)
at com.sap.tc.webdynpro.clientserver.data.DataContainer.validatePendingUserInput(DataContainer.java:529)
at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.validate(ClientComponent.java:592)
at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.validate(ClientApplication.java:635)
at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.transportData(WebDynproMainTask.java:596)
at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.execute(WebDynproMainTask.java:528)
at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:49)
at com.sap.tc.webdynpro.clientserver.cal.ClientManager.doProcessing(ClientManager.java:239)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doWebDynproProcessing(DispatcherServlet.java:130)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:92)
at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:373)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:250)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:319)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:297)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:696)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:221)
at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:146)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)
at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)
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:94)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:140)
thanx in advance.
pp
Hi Hara,
Hope you have created two attributes
att1.type string for file name
att2.binary for the data stream
In init create an instance of this code
IPrivate<view name>.I<nodename>element elementname = wdcontext.create<nodename>element
Then bind it to the node
Create a simple trype using the following code
IWDAttributeInfo attinfo = wdContext.node<node name>().getNodeInfo().getAttribute("att2");
ISimpleTypeModifiable modinfo = attinfo.getModifiableSimpleType(); IWDModifiableBinaryType bintype = (IWDModifiableBinaryType)modinfo;
String location = "";
String file = wdContext.currentcontextelement.get<att1>;
String filename = location+file
File destinationFile = new file(filename);
fileOutputStream out = new fileOutputStream(destinationFile);
Check whether att2 is null or not
If not
out.write(<node element>.getatt2)
This error may be because you are not properly writing to the file
N.B.:- Settings needed to be made in server for uploading a file.
In VisualAdminServicesWeb Container, set the parameter MultipartBodyParameterName to com.sap.servlet.multipart.body
Hope this helps you
Regards
Rohit
Message was edited by: Rohit Radhakrishnan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.