Разрешены ли пробелы в атрибуте name тега Struts: equal? - PullRequest
0 голосов
/ 26 ноября 2008

Я обнаружил следующую разметку в файле JSP в поддерживаемом мною устаревшем приложении:

<logic:equal name="welcome memberInfoView" property="hasFoo" value="false">

Этот атрибут имени выглядит очень неправильно для меня. Исходя из того, что я прочитал в документации Struts, это место не разрешено.

Это законно? Если так, что бы он делал? Если нет, то каково было намерение?

РЕДАКТИРОВАТЬ: После дополнительного поиска я обнаружил, что "welcome memberInfoView" действительно намеренно использовался в качестве имени атрибута (с пробелом).

1 Ответ

2 голосов
/ 26 ноября 2008

На самом деле это название законно, но нетрадиционно. Хотя синтаксически это допустимо, это действительно может быть ошибка.

«name» указывает имя атрибута в некоторой области (определяется необязательным атрибутом «scope», который по умолчанию равен «any»), а не имя переменной сценария. Поскольку это фактически ключ на карте, это может быть любая строка символов.

Этот тег будет начинаться в контексте страницы и искать атрибут с именем "welcome memberInfoView". Он будет продолжать охватывать области, пока не будет найден названный объект. Затем он будет смотреть на свойство hasFoo этого объекта. Если это «ложь», включенный фрагмент будет вызван.

Еще одна вещь, которая выглядит неправильно, это свойство hasFoo. Как правило, свойство будет просто «foo», и объект должен иметь метод доступа с именем isFoo() или getFoo(). Возможно, логический тег мягок в этом отношении и успешно вызовет метод hasFoo().

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

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