Обрабатывать нулевые значения, поступающие в запросе, в обработчике запросов Spring. - PullRequest
0 голосов
/ 20 октября 2011

Весной 3:
My Bean:

public class UserFormBean {

    private String userEmail;
    private String userMobNo;

    public String getUserEmail() {
        return userEmail;
    }
    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }
    public String getUserMobNo() {
        return userMobNo;
    }
    public void setUserMobNo(String userMobNo) {
        this.userMobNo = userMobNo;
    }

}

И мой обработчик запросов в контроллере:

@RequestMapping(value = "/userData", method = RequestMethod.GET)
String userData(UserFormBean bean){
    //code to handle incoming data
}

, если пользователь не установил никакого значения в 'userEmail'и 'userMobNo' атрибутов во время запроса, по умолчанию пружина устанавливает null в этих атрибутах, и когда я получаю значение этих атрибутов в моем обработчике запросов с помощью String str = bean.getUserEmail();, он возвращает мне null in double quote, как "null".

Есть ли способ преобразовать эти null значения в "" (blank), когда они содержат null, потому что я создал дополнительный обработчик для обработки этих "null" значений.Или лучше решить эту проблему.

Спасибо

Ответы [ 3 ]

2 голосов
/ 20 октября 2011

Я думаю, что самый простой способ - инициализировать свойства пустой строкой:

private String userEmail = "";
private String userMobNo = "";
1 голос
/ 21 октября 2011

Вы можете определить стандарт для именования ваших "веб-методов", например:

@RequestMapping(value = "/userData", method = RequestMethod.GET)
String webUserData(UserFormBean bean){
    //code
}

Когда все ваши методы начинаются с web *, вы можете написать аспект, который будет инициализировать все аргументы, как вам бы хотелось.

Если вам нужна помощь в создании и определении аспекта, просто спросите.

ОБНОВЛЕНИЕ: создание и определение аспекта

Я не буду писать код для вас, потому что для вас намного лучше учиться, читая документацию - вы узнаете много дополнительных деталей.

Тем не менее, шаги для создания аспекта:

  1. Включить поддержку AspectJ - этот шаг выполняется только один раз во всем приложении
  2. Объявить аспект - создать класс с аннотацией @Aspect
  3. Объявите pointcut внутри вашего аспекта - укажите точку интереса в вашем коде, вокруг которой аспект будет делать некоторые вещи, в вашем случае, web * методы
  4. Объявите совет внутри вашего аспекта - @Before, @AfterReturning, @AfterThrowing, @After, @Around, здесь вы напишите свой конкретный код аспекта

В вашем коде аспекта вам нужно получить доступ к текущим аргументам метода и выполнить логику для установки пустых строковых значений для строк.

1 голос
/ 20 октября 2011

Я подозреваю, что сеттер вызывается с "\" null \ "" для нового значения. Попробуйте это:

public void setUserEmail(final String newValue)
{
  if (StringUtils.isNotBlank(newValue) &&
      "\"null\"".equals(newValue))
  {
    userEmail = newValue;
  }
  else
  {
    userEmail = StringUtils.EMPTY;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...