Faced the same issue and came up with two (similar) workarounds:
Option 1: Override 'swagger-initializer.js' in META-INF
Take swagger-initializer.js from the swagger-ui webjars bundle and copy it to the following path (please make sure it matches your version, I am using 4.13.2):
/src/main/resources/META-INF/resources/webjars/swagger-ui/4.13.2/swagger-initializer.js
Then adjust swagger-initializer.js according to your needs, e.g. activate queryConfigEnabled:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// adjusted from /webjars/swagger-ui/4.13.2/swagger-initializer.js
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
window.onload = function() {
//<editor-fold desc="Changeable Configuration Block">
// the following lines will be replaced by docker/configurator, when it runs in a docker-container
window.ui = SwaggerUIBundle({
urls: [{url:"https://darosh.github.io/openapi-directory-lite/specs/github.com/v3.json", name: "github"},{url: "https://petstore.swagger.io/v2/swagger.json", name: "petstore"}],
dom_id: '#swagger-ui',
deepLinking: true,
queryConfigEnabled: true, // <-- I added this line
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
});
//</editor-fold>
};
Now you should find the Swagger-UI on the URL as before, but with the adjustments made in your swagger-initializer.js.
I successfully tested this approach in a Spring Boot Application.
Option 2: Create custom html with custom swagger-initializer.js
Take index.html and swagger-initializer.js from the swagger-ui webjars bundle and copy it to the path that you are serving from. In a Spring Boot Application that could be for example:
src/main/resources/static/swagger-initializer.js
src/main/resources/static/swagger-ui.html
(I renamed it from index.html to swagger-ui.html for clarity)
Now adjust the html file to point to the proper webjars location of the swagger-ui resources and point to your own swagger-initializer.js:
<!--------------------------------------------------------------------------------------------------------------------->
<!-- adjusted from webjars/swagger-ui/4.13.2/schema-template.json-->
<!--------------------------------------------------------------------------------------------------------------------->
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI by Fable</title>
<link rel="stylesheet" type="text/css" href="/webjars/swagger-ui/swagger-ui.css" />
<link rel="stylesheet" type="text/css" href="/webjars/swagger-ui/index.css" />
<link rel="icon" type="image/png" href="/webjars/swagger-ui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/webjars/swagger-ui/favicon-16x16.png" sizes="16x16" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="/webjars/swagger-ui/swagger-ui-bundle.js" charset="UTF-8"> </script>
<script src="/webjars/swagger-ui/swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
<script src="/swagger-initializer.js" charset="UTF-8"> </script>
</body>
</html>
Now you can adjust you own swagger-initializer.js to your needs (see Option 1 for example).
You can find the adjusted Swagger-UI on a new URL, depending on how you serve your resources. Please make sure that you access your adjusted html file and not the default html file from swagger-ui as this one stays unchanged.
I successfully tested this approach in a Spring Boot Application.
Final Notes
While Option 1 requires to adjust only one file, Option 2 appears more clean and more flexible to me. Please note that in Option 1 you have to adjust the path to your custom swagger-initializer.js whenever you update your webjar's version as the version is encoded in the path.