Расширение распорок 2 тега «свойство» - PullRequest
1 голос
/ 14 апреля 2010

В настоящее время мы разрабатываем проект со Struts2. У нас есть модуль, в котором мы отображаем большой объем данных в полях только для чтения из группы bean-компонентов с помощью тега данных «свойство» Struts 2 (т. Е. ) в файле jsp. , В некоторых случаях большинство полей могут быть пустыми, поэтому на экране отображается пробел.

Наш клиент теперь просит нас отображать строку по умолчанию (то есть "N / A") всякий раз, когда свойство становится пустым, чтобы оно отображалось вместо пробелов, показанных в данный момент.

Мы ищем способ добиться этого простым и понятным способом. Тег 'property' поставляется с атрибутом 'default', по которому можно определить значение по умолчанию в случаях, когда доступное свойство имеет значение null. Однако большинство наших свойств являются пустыми строками, поэтому в нашем случае это не работает.

Другое решение, о котором мы думаем, - это определить базовый класс для всех наших bean-компонентов и определить метод util, который будет проверять, является ли строка пустой или пустой, а затем возвращает значение по умолчанию. Затем мы будем вызывать этот метод из каждого получателя бина. И да, это было бы утомительно и некрасиво :), поэтому мы придерживаемся этого в случае лучшего решения.

Теперь мы имеем в виду решение, которое, по нашему мнению, будет наилучшим, но нам не повезло, как его реализовать. Мы планируем каким-то образом расширить тег 'property', определив новый атрибут 'default', чтобы, кроме работы с нулевыми свойствами, он также делал это для пустых строк ("", "" и т. Д.). Поэтому нам нужно будет только заменить оригинальный тег s: property нашим новым пользовательским тегом, и желаемый результат будет достигнут без прикосновения к java-коду.

У вас есть идея, как это сделать? Также приветствуется любое другое умное решение (может быть, какой-то шаблон проектирования?) О том, как по умолчанию использовать значения большого количества bean-компонентов свойств!

(Или, может быть, даже есть какой-то тег, который делает это уже в Struts2 ??)

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


Укороченная версия, если вы не хотите читать все вышеперечисленное! :)

В настоящее время Struts2 предоставляет тег свойства (), который используется для отображения содержимого значения, например, строковая переменная в классе Action. Этот тег содержит атрибут с именем «default», в котором вы можете определить значение по умолчанию, которое будет отображаться, если для переменной задано значение NULL, например, Вы можете настроить отображение «N / D» для этих значений.

Теперь нам нужно сделать то же самое, но это также работает с пустыми строками ("", "" и т. Д.), А не только с пустыми значениями. Мы планируем расширить этот тег, чтобы у нас был свой собственный (возможно, что-то вроде ) и выполнить это поведение. Можете ли вы подсказать, как этого добиться?

Ваша помощь очень ценится. Спасибо!

1 Ответ

0 голосов
/ 14 апреля 2010

Интересно. Я верю, что вы на правильном пути.

Только для того, чтобы я попытался расширить / изменить тег свойства, чтобы новое поведение было явно задано в коде jsp. Я имею в виду, что мне не хотелось бы, чтобы каждый в веб-приложении автоматически получал новое поведение, потому что, возможно, существуют некоторые свойства bean-компонентов, для которых мне нужно исходное поведение struts2. Я бы предпочел иметь новый тег nane (например: ... или что-то более короткое) или новый атрибут (например)

Возможно, это поможет: http://bodez.wordpress.com/2009/03/13/customising-struts2-jsp-tags/

...