Spring 5.0, Невозможно установить нулевое значение для переменной, которая находится в @SessionAttribute - PullRequest
0 голосов
/ 08 января 2019

В моем приложении мы использовали

public class SessionConversationAttributeStore implements SessionAttributeStore
{
public void storeAttribute(WebRequest request, String attributeName, Object 
attributeValue) {
  // my own logic
 }
}

вышеуказанный storeAttribute () метод, вызванный из SessionAttributesHandler класса storeAttribute () метод.

В Spring 4.0 нулевое значение переменной принимается в @ SessionAttribute.

Ниже приведен код метода storeAttributes () в SessionAttributesHandler class.

/**
 * Store a subset of the given attributes in the session. Attributes not
 * declared as session attributes via {@code @SessionAttributes} are ignored.
 * @param request the current request
 * @param attributes candidate attributes for session storage
 */
public void storeAttributes(WebRequest request, Map<String, ?> attributes) {
    for (String name : attributes.keySet()) {
        Object value = attributes.get(name); 

/* null value is accepted here */  

        Class<?> attrType = (value != null) ? value.getClass() : null;

        if (isHandlerSessionAttribute(name, attrType)) {
            this.sessionAttributeStore.storeAttribute(request, name, value);
        }
    }
}

В Spring 5.0 нулевое значение переменной не принимается в @ SessionAttribute.

Ниже приведен код метода storeAttributes () в SessionAttributesHandler class.

/**
 * Store a subset of the given attributes in the session. Attributes not
 * declared as session attributes via {@code @SessionAttributes} are ignored.
 * @param request the current request
 * @param attributes candidate attributes for session storage
 */
public void storeAttributes(WebRequest request, Map<String, ?> attributes) {
    attributes.forEach((name, value) -> {

/* null value is not accepted here */

        if (value != null && isHandlerSessionAttribute(name, value.getClass())) {
            this.sessionAttributeStore.storeAttribute(request, name, value);
        }
    });
}

Большая часть логики атрибута сеанса в моем приложении устанавливает нулевое значение, но весной 5.0 я не могу установить нулевое значение в sessionAttribute.

Как лучше всего решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...