Struts <logic: notEmpty> не работает или свойство компонента не записывается должным образом в JSP?

1

Я начинаю исправлять ошибки для программы, с которой у меня мало знакомо. Я изменил раздел кода на одном из 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).

  • 0
    Синтаксис выглядит хорошо. Что произойдет, если вы удалите условие notEmpty? Это печатает любое middleName?
  • 0
    Это печатает то же самое. Это как отчество пустое или нулевое, но Struts не думает, что это так.
Показать ещё 4 комментария
Теги:
jsp
jstl
struts
struts-tags

2 ответа

4
Лучший ответ

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

public String getMiddleName() { return middleName != null? middleName.trim(): middleName;}   
  • 0
    Это не похоже на мое второе имя Строки имеют пробелы. Он печатает пустую строку или вообще ничего.
  • 0
    Ничего, что он не может распечатать, убедитесь, что у вас есть действительные символы.
Показать ещё 3 комментария
1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню