powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring EL и перегруженные методы
3 сообщений из 3, страница 1 из 1
Spring EL и перегруженные методы
    #39523137
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть некий сервис с методами помеченными как @PreAuthorize
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@PreAuthorize("principal.somePrincipalMethod(#request.property1, #request.property2, 'stringA', 'stringB')")
public SomeResponse someWebServiceMethod1(SomeRequest request) {
    ...
}
@PreAuthorize("principal.somePrincipalMethod(#request.property1, 'stringA', 'stringB', 'stringC')")
public SomeResponse someWebServiceMethod2(SomeRequest request) {
    ...
}
public class SomeRequest {
    Long property1;
    Long property2;
}


И есть 2 перегруженных метода в классе, реализующем UserDetails
Код: java
1.
2.
3.
4.
5.
6.
public boolean somePrincipalMethod(Long longParam1, Long longParam2, String... stringParams) {
    return true;
}
public boolean somePrincipalMethod(Long longParam, String... stringParams) {
    return true;
}


Когда вызываю
Код: java
1.
someWebServiceMethod1(new SomeRequest(1L, 2L))


срабатывает
Код: java
1.
somePrincipalMethod(1L, {"2", "stringA", "stringB"})


а не
Код: java
1.
somePrincipalMethod(1L, 2L, {"stringA", "stringB"})


Как быть?
...
Рейтинг: 0 / 0
Spring EL и перегруженные методы
    #39523156
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й ПилигримКак быть?
Засабмитить багу. Раскопать исходники и исправить.
...
Рейтинг: 0 / 0
Spring EL и перегруженные методы
    #39523164
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz13-й ПилигримКак быть?
Засабмитить багу. Раскопать исходники и исправить.
Не вполне уверен, что баг, а не фича.
Пока вот такой workaround:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@PreAuthorize("principal.somePrincipalMethod(#request.property1, #request.property2, {'stringA', 'stringB'})")
public SomeResponse someWebServiceMethod1(SomeRequest request) {
    ...
}
@PreAuthorize("principal.somePrincipalMethod(#request.property1, {'stringA', 'stringB', 'stringC'})")
public SomeResponse someWebServiceMethod2(SomeRequest request) {
    ...
}


и vararg's убрать
Код: java
1.
2.
3.
4.
5.
6.
public boolean somePrincipalMethod(Long longParam1, Long longParam2, String[] stringParams) {
    return true;
}
public boolean somePrincipalMethod(Long longParam, String[] stringParams) {
    return true;
}


Вроде, работает.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring EL и перегруженные методы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]