Распорки не работающее или bean-свойство, которое неправильно написано JSP?

Я начинаю исправлять ошибки для программы, с которой у меня мало знакомо. Я изменил раздел кода на одном из 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">.
 </bean:write></logic:notempty>
</bean:write></bean:write></html:link>

Почему не работает? Могло ли свойство middleName быть непустым, если свойство не существует? Что-то не так с моим синтаксисом?

Я также пытался использовать теги JSTL, но я не мог заставить его работать в OC4J (ошибка: " http://java.sun.com/jsp/jstl/core " не является зарегистрированным пространством имен TLD).

2 ответа

logic:notEmpty тега logic:notEmpty оценивает значение true, потому что ваша средняя строка имени имеет пробелы. Вы должны избавиться от пробелов, прежде чем возвращать их в тег. Лучше сделайте это в форме bean like

public String getMiddleName() { return middleName != null? middleName.trim(): middleName;}


Я подозреваю, что ваше middleName пустое или имеет пробелы. если да, попробуйте использовать logic:equal совпадению и напечатать некоторый символ вместо периода, посмотрите, что произойдет. Если true, то middleName, прежде чем отправлять его в JSP.

licensed under cc by-sa 3.0 with attribution.