Struts <logic: notEmpty> не работает или свойство компонента не записывается должным образом в JSP?
Я начинаю с исправления ошибок в программе, с которой у меня мало знакомых. Я изменил часть кода на одном из JSP. Мне нужно, чтобы он печатал имена в любом из двух следующих форматов (в зависимости от того, существует свойство второго имени):
Фамилия, Имя М.
Фамилия Имя
Я считаю, что мой код должен печатать среднюю букву и точку тогда и только тогда, когда это свойство существует, но для каждого имени в списке он печатает:
Фамилия Имя.
Он не печатает ни средней инициалы, ни средней инициалы, которая является пустой строкой, за которой следует точка.
Соответствующий код выглядит следующим образом:
<html:link styleClass="recordLink" action="/secure/admin/users?actionMethod=details" paramId="userId" paramName="users" paramProperty="userId">
<bean:write name="users" property="lastName"/>,
<bean:write name="users" property="firstName"/>
<logic:notEmpty name="users" property="middleName">
<bean:write name="users" property="middleName"/>.
</logic:notEmpty>
</html:link>
Почему <logic:notEmpty>
тег не работает? Может ли middleName
свойство будет определено как непустое, если свойство не существует? Что-то не так с моим синтаксисом?
Я также пытался использовать теги JSTL, но не смог заставить его работать в OC4J (ошибка: " http://java.sun.com/jsp/jstl/core" не является зарегистрированным пространством имен TLD.)
2 ответа
Тег logic:notEmpty
оценивается как истина, потому что в строке второго имени есть пробелы. Вы должны избавиться от пробелов, прежде чем возвращать его в тег. Лучше сделать это в виде бобов
public String getMiddleName() { return middleName != null? middleName.trim(): middleName;}
Я подозреваю, что ваш middleName
является пустой строкой или имеет пробелы. если так, попробуйте использовать logic:equal
чтобы сопоставить и напечатать некоторый символ вместо точки, посмотрите, что произойдет. Если это правда, то обрезать middleName
перед отправкой в JSP.