Вы пытались использовать вместо этого toNow
, поскольку это дата в прошлом?
Кроме того, возможно, что компонент <Moment />
выполняет рендеринг до установки action.started
. Возможно, вы захотите изменить эту строку на:
trigger={action.started && <Moment fromNow>{action.started}</Moment>}
, чтобы убедиться, что action.started
имеет значение до рендеринга Moment
Просто используйте пустой оператор EL, ЕСЛИ это был ограниченный по объему атрибут, к сожалению, необходимо будет пойти с окружением выражения с помощью employee.salary с <c:catch>:
<c:catch var="err">
<c:out value="${employee.salary}"/>
</c:catch>
При реальной необходимости в instanceof Вы могли бы рассмотреть пользовательский тег.
Если Вы хотите класс, просто используйте ${person.class}
. Можно также использовать ${person.class.name eq 'my.package.PersonClass'}
Можно также использовать "значение по умолчанию" на c:out.
<c:out value='${person.salary}' default="Null Value" />
Краткий, но неконтролируемый.
<tr>
<td>${person.name}</td>
<td>${person.class.simpleName == 'Employee' ? person.salary : ''}</td>
</tr>
Существует ли регистрация instanceof языка тега JSP?
Не во время этой записи. Я считал где-нибудь, что они зарезервировали его, instanceof ключевое слово, в EL, может быть для будущего. Кроме того, существует библиотека, доступная, который имеет этот определенный тег. Изучите это прежде, чем решить создать некоторый пользовательский тег для себя. Вот ссылка, Нестандартная Библиотека тегов.
Один метод должен был бы создать пользовательскую библиотеку тегов и полиморфизм использования в ней для обработки случая где a Person
- a Employee
.
Я не выполнил в этом некоторое время для JSP, но часто использую подобную технику в GSP (Страницы Сервера Groovy/Grails).
Иначе Вы могли вставить некоторую логику JSP
(не идеальный) для тестирования на Employee
- мыс:
<%
String salary
if (person instanceof Employee) {
salary = person.salary
} else {
salary = "" // or ' '
}
%>
<td><c:out value="${salary}"></td>
У Вас могло всегда быть поле типа.
public class Person {
public String getType() { return "Person"; }
public String getName()
}
public class Employee extends Person {
public String getType() { return "Employee"; }
public float getSalary()
}
Ваш JSP был бы похож
<tr>
<td><c:out value="${person.name}"></td>
<td><c:if test="'Employee' eq person.type"><c:out value="${person.salary}"></c:if></td>
</tr>
Конечно, класс Класса уже имеет это...
<tr>
<td><c:out value="${person.name}"></td>
<td><c:if test="'Employee' eq person.class.simpleName"><c:out value="${person.salary}"></c:if></td>
</tr>
Вы могли также иметь 'isEmployee ()' метод.