Как сохранить состояние NULL в логическом значении, посылая пустую строку из JSP в Action
У меня есть критерий на странице поиска, который является boolean
, Поскольку это не обязательно, я не могу использовать флажок, потому что я могу пропустить его;
JSP
<s:select list = '#{ "":"Make your choice...", true:"FOO", false:"BAR" }'
name = "myBooleanCriterion" />
действие
private Boolean myBooleanCriterion;
/* Getter and Setter */
Мы знаем это boolean
по умолчанию false
, в то время как Boolean
по умолчанию null
, то при первом отображении страницы все в порядке (отображается"Сделайте свой выбор").
Однако после POST Struts создает экземпляр Boolean
свойство (по умолчанию это false
) даже когда находит ""
в качестве значения, поэтому, когда я возвращаюсь в JSP, значение предварительно выбирается для false
("БАР").
Как я могу поручить Struts не создавать экземпляр этой переменной, если значение ""
оставив его в оригинале, null
государство? Нужно ли создавать конвертер или указать что-то в .properties
файл? (Я в основном такой же код, как в примере.2 из этого ответа)
Я пользуюсь (немного кастом) paramsPrepareParamsStack
Стек перехватчиков.
Я чувствую себя так, будто мне не хватает чего-то глупого.
1 ответ
Поскольку XWorkBasicConverter
новообращенные boolean
-с точно так же, как он преобразует Boolean
-s, используя Boolean.valueOf()
метод, пустая строка или null
будет преобразован в false
,
Чтобы иметь null
после отправки вам нужно создать собственный конвертер для Boolean
или не отправляйте этот параметр вообще. (Например, изменить name
атрибут с JavaScript, если выбранное значение ""
).