I need to load a WFS layer from GeoServer 2.8 to a web app using OpenLayers 4.6.5 and JQuery 2.2.3 so that I can use Select to highlight a feature on click. I can preview the line layer as a WMS with no problems in GeoServer, but when I try loading in the app, in the network response gives this error:
<ows:Exception exceptionCode="NoApplicableCode">
<ows:ExceptionText>java.lang.RuntimeException:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
String index out of range: -1
</ows:ExceptionText>
</ows:Exception>
There are no errors in the console.
What could be causing this? The ajax call is below:
var layerWFS = new ol.layer.Vector({
source: new ol.source.Vector({
loader: function (extent) {
$.ajax('http://servername:8080/geoserver/wfs', {
type: 'GET',
data: {
service: 'WFS',
version: '1.1.0',
request: 'GetFeature',
typename: 'lines',
srsname: 'EPSG:2263',
}
}).done(function (response) {
layerWFS
.getSource()
.addFeatures(new ol.format.WFS()
.readFeatures(response));
});
},
strategy: ol.loadingstrategy.all,
projection: 'EPSG:2263',
crossOrigin: 'anonymous',
}),
here is a snippet of the GeoServer log file:
2020-03-30 12:10:50,790 INFO [geoserver.wfs] - Request: getServiceInfo 2020-03-30 12:10:50,806 INFO [geoserver.wfs] - Request: getFeature service = WFS version = 1.1.0 baseUrl = http://servername:8080/geoserver/ query[0]: srsName = EPSG:2263 typeName[0] = {http://boundlessgeo.com/}lines outputFormat = text/xml; subtype=gml/3.1.1 resultType = results 2020-03-30 12:10:50,853 ERROR [geoserver.ows] - java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at org.geotools.xml.Encoder.encode(Encoder.java:738) at org.geotools.xml.Encoder.encode(Encoder.java:609) at org.geoserver.wfs.xml.GML3OutputFormat.encode(GML3OutputFormat.java:302) at org.geoserver.wfs.xml.GML3OutputFormat.write(GML3OutputFormat.java:279) at org.geoserver.wfs.WFSGetFeatureOutputFormat.write(WFSGetFeatureOutputFormat.java:196) at org.geoserver.ows.Dispatcher.response(Dispatcher.java:996) at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:279) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
here is what I found later in log under 'caused by':
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.AbstractStringBuilder.setLength(Unknown Source) at java.lang.StringBuffer.setLength(Unknown Source) at org.geotools.gml2.simple.GMLWriter.coordinates(GMLWriter.java:302) at org.geotools.gml2.simple.GMLWriter.positions(GMLWriter.java:291) at org.geotools.gml2.simple.GMLWriter.posList(GMLWriter.java:348) at org.geotools.gml3.simple.LineStringEncoder.encode(LineStringEncoder.java:52) at org.geotools.gml3.simple.LineStringEncoder.encode(LineStringEncoder.java:34) at org.geotools.gml2.simple.FeatureCollectionEncoderDelegate.encodeValue(FeatureCollectionEncoderDelegate.java:196) at org.geotools.gml2.simple.FeatureCollectionEncoderDelegate.encodeFeature(FeatureCollectionEncoderDelegate.java:176) at org.geotools.gml2.simple.FeatureCollectionEncoderDelegate.encode(FeatureCollectionEncoderDelegate.java:130) at org.geotools.xml.Encoder.encode(Encoder.java:735)