В моем приложении мы использовали
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.
Как лучше всего решить эту проблему?