Путь к скрипту Spring MVC
Необходимо подключить jquery к html файлу для выполнения скрипта по проверке на допустимые символы. Однако, мое решение не работает(ошибок не выдает, просто скрипт не срабатывает), подскажите, пожалуйста, правильно ли я подключил jquery.
подключение в html
<head>
<script type="text/javascript" src="jquery-3.5.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#iname').on('input', function() {
if ($(this).val() != '') {
var pattern = /^[a-z0-9]+$/i;
if (pattern.test($(this).val())) {
$(this).css({
'border': '1px solid #ebebeb'
});
$('#valid').text('');
} else {
$(this).css({
'border': '1px solid #ff0000'
});
$('#valid').text('Только латинские символы и цифры');
}
} else {
$(this).css({
'border': '1px solid #ff0000'
});
$('#valid').text('Поле не должно быть пустым');
}
});
});
</script>
</head>
форма
<form method="POST" action="/expsearch">
<input type="text" name="name" id="iname" th:value="${name}" placeholder="Введите название книги" pattern=".{0,255}" class="form-control"><br>
<div id="valid"></div><br>
<button type="submit" class="btn btn-success">Найти книги</button>
</form>
конфигурация
@SpringBootApplication
public class LibraryWebApplication implements WebMvcConfigurer {
public static void main(String[] args) {
SpringApplication.run(LibraryWebApplication.class, args);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js/");
}
}
Ответы (2 шт):
Запрос должен быть на:
<script type="text/javascript" src="/js/jquery-3.5.1.js"></script>
На сколько я понял из документации по конфигурации поставляемых источников все запросы должны включать путь на который делается мапинг.
For example, to serve resource requests with a URL pattern of /resources/** from a public-resources directory within the web application root you would use:
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter {
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/public-resources/"); }
}
И они рекоммендуют расширять WebMvcConfigurerAdapter вместо реализации интерфейса WebMvcConfigurer
Было бы неплохо, если бы ты скинул ЛОГИ из консольки браузера.
Я могу предположить, что проблема в Spring, который не всегда охотно находит нужные файлы front-end'а. Попробуй так(тут в коде не трогай ничего, только попробуй переместить все свои файлы js и html в templates, чтобы кроме templates не было больше путей):
/**
* Данный метод помогает Spring обнаруживать пути к файлам
*
* @param registry
*/
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/templates/");
}
