accessDeniedHandler срабатывает только если я зологинился и пытаюсь зайти на существующую запрещенную страницу. Почему он не срабатывает если я разлогиненый и пытаюсь зайти на существующую запрещенную страницу и перекидывает на страницу логина?
permitAll()
, проходя дальше по цепочке он натыкается на .anyRequest().authenticated()
и отдает Access Denied Exception./error
закомментирована. Возможно, что он пытается показать ошибку, но так как эта страница недоступна будучи неавторизованным, то сперва перекидывает на страницу авторизации...@Controller
public class HttpErrorController implements ErrorController {
private final MessageSource messageSource;
@Autowired
public HttpErrorController(MessageSource messageSource) {
this.messageSource = messageSource;
}
@RequestMapping("/error")
public String handleError(
Locale locale,
Model model,
HttpServletRequest request,
Exception ex
) {
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if (status != null) {
int statusCode = Integer.valueOf(status.toString());
Map<String, String> metaData = new HashMap<>();
// 403
if (statusCode == HttpStatus.FORBIDDEN.value()) {
//do somthing
}
// 404
else if (statusCode == HttpStatus.NOT_FOUND.value()) {
//do somthing
}
// 405
else if (statusCode == HttpStatus.NOT_FOUND.value()) {
//do somthing
}
// 500
else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
//do somthing
}
}
return "errors/httperrors";
}
@Override
public String getErrorPath() {
return "/error";
}
}
href="/contact"
, то при наличии context может не работать. И соответственно, например, через thymeleaf надо добавлять как th:href="@{/contact}"
Reason: Failed to determine a suitable driver class
Серьезно заниматься андроид разработкой не планирую так что мне бы какой ни будь небольшой материал который бы все упомянул всколзь.
public interface LfkServerAPI {
@GET("rest/categories/list")
Call<List<CategoryDTO>> getAllCategories();
}
@Data
public class Category {
private Long categoryId;
private String categoryName;
private String categoryDescription;
}
@Getter
@Setter
public class CategoryDTO {
private Long categoryId;
private String categoryName;
private String categoryDescription;
}
public class ApiClient {
public static Retrofit retrofit = null;
public static Retrofit getApiClient() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(JacksonConverterFactory.create())
.build();
}
return retrofit;
}
}
LfkServerAPI lfkServerAPI = ApiClient.getApiClient().create(LfkServerAPI.class);
Call<List<CategoryDTO>> allCategoriesListCall = lfkServerAPI.getAllCategories();
allCategoriesListCall.enqueue(new Callback<List<CategoryDTO>>() {
@Override
public void onResponse(Call<List<CategoryDTO>> call, Response<List<CategoryDTO>> response) {
if (!response.isSuccessful()) {
Log.d(LOG, "Ответ сервера: " + response.code());
return;
}
// Вызываем метод body() из полученного ответа, где будет наш pojo
List<CategoryDTO> categoryDTOS = response.body();
if (categoryDTOS != null) {
categoryDTOS.forEach(categoryDTO -> {
Category category = new Category();
category.setCategoryId(categoryDTO.getCategoryId());
category.setCategoryName(categoryDTO.getCategoryName());
category.setCategoryDescription(categoryDTO.getCategoryDescription());
category.save();
});
}
}
@Override
public void onFailure(Call<List<CategoryDTO>> call, Throwable throwable) {
Log.d(LOG, throwable.getMessage());
}
});
Processing android admob
public String cyrToLat(String message) {
char[] abcCyr = {
'а', 'б', 'в', 'г', 'д',
'е', 'ё', 'ж', 'з', 'и', 'й',
'к', 'л', 'м', 'н', 'о', 'п', 'р',
'с', 'т', 'у', 'ф', 'х', 'ц', 'ч',
'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
' ', '.', '№', ',', '-', '_'
};
String[] abcLat = {
"a", "b", "v", "g", "d", "e", "e",
"zh", "z", "i", "y", "k", "l", "m", "n",
"o", "p", "r", "s", "t", "u", "f", "h",
"ts", "ch", "sh", "sch", "", "i", "",
"e", "ju", "ja",
"a", "b", "c", "d", "e", "f", "g", "h",
"i", "j", "k", "l", "m", "n", "o", "p",
"q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"-", "-", "no", "-", "-", "_"
};
StringBuilder builder = new StringBuilder();
for (int i = 0; i < message.length(); i++) {
for (int x = 0; x < abcCyr.length; x++) {
if (message.charAt(i) == abcCyr[x]) {
builder.append(abcLat[x]);
}
}
}
return builder.toString();
}
Error: JavaFX runtime components are missing, and are required to run this application
1) Законность. Как, где и что я должен оформить, чтобы подобные дополнительные доходы были законными? Какие налоги и отчисления я должен буду платить? Напоминаю, я официально работаю, получаю белую зарплату и работодатель добросовестно отчисляет всё, что необходимо.
2) Требуется ли открывать ИП или что-то подобное?
3) Каким образом вообще будет осуществляться оплата? Сколько я не читал, так до конца и не понял. Какой-то счёт особый надо в банке открывать?
4) В какую сферу лучше податься? Что-то мне подсказывает, что энтерпрайз и фриланс не совместимы, из этой области там ничего не будет. Учитывая это, а также то, что моим основным инструментом на протяжении многих лет был java, вижу два варианта развития(без перехода на другой язык): бэкэнд для сайтов/сервисов (сервлеты, спринг и т.д) или разработка приложений под Android