Я начинаю исправлять ошибки для программы, с которой у меня мало знакомо. Я изменил раздел кода на одном из JSP. Мне нужно распечатать имена в любом из двух следующих форматов (в зависимости от того, существует ли свойство среднего имени):
LastName, FirstName M.
Фамилия Имя
Я считаю, что мой код должен печатать средний начальный и период тогда и только тогда, когда это свойство существует, но для каждого имени в списке он печатает:
Фамилия Имя.
Он печатает либо среднее начальное, либо среднее начальное значение, которое является пустой строкой, за которой следует период.
Соответствующий код выглядит следующим образом:
<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).
logic:notEmpty
тега logic:notEmpty
оценивает значение true, потому что ваша средняя строка имени имеет пробелы. Вы должны избавиться от пробелов, прежде чем возвращать их в тег. Лучше сделайте это в форме bean like
public String getMiddleName() { return middleName != null? middleName.trim(): middleName;}
Я подозреваю, что ваше middleName
пустое или имеет пробелы. если да, попробуйте использовать logic:equal
совпадению и напечатать некоторый символ вместо периода, посмотрите, что произойдет. Если true, то middleName
, прежде чем отправлять его в JSP.