Как перенаправить пользователя на страницу с ошибкой из совета, если параметр пуст / пуст? - PullRequest
0 голосов
/ 12 апреля 2019

Я бы хотел перенаправить пользователя на страницу ошибки изнутри Advice без необходимости генерировать исключение, если параметр не указан.Это возможно?Если да, то как я могу это сделать?

В настоящее время я выбрасываю исключение, но чувствую, что это излишне, а журнал, который он оставляет, слишком много:

@Aspect
@Component
public class ParamTracker{

    private static final Logger logger = LogManager.getLogger("ParamTrackerLogger");

    @Before("execution(* com.controller.MainController.*(..)) && !execution(* com.controller.MainController.doNotUseThis(..))")
    public void trackParam(JoinPoint point) throws Exception {
        String methodName = point.getSignature().getName();
        String param = point.getArgs()[0].toString();
        if(param.isEmpty()) {
            logger.error("Param is empty");
            throw new Exception("Please specify param");
        } else {
            logger.info(param + ". " + methodName);
        }
    } 

}

Перенаправление пользователя настраница ошибки и простой параметр не указан.Перенаправление на страницу ошибки ... в журнале было бы идеально.Кроме того, он не должен быть @Before, пока он работает.

Заранее спасибо.

1 Ответ

0 голосов
/ 13 апреля 2019

Я думаю, что одним из возможных решений может быть что-то вроде этого:

  1. Вы можете написать собственное исключение для случая, когда параметр недействителен. например, ParamIsEmptyException.

  2. Когда параметр пуст, выведите исключение вместо обычного исключения.

  3. В вашем центральном обработчике исключений (если у вас его нет, вы можете просто сделать это), проверьте тип исключения, если исключение имеет тип ParamIsEmptyException, вы можете использовать метод HttpServletResponse.sendRedirect для перенаправления пользователя на любой URL.
...