Существует проблема с разрешением views
пути. Попытайтесь потребовать модуль path
после экспресс
var express = require('express');
var path = require('path');
var app = express();
var port = 3000;
и после установки шаблона ejs добавьте это:
app.set('view engine', 'ejs');
app.set('views', path.resolve(__dirname, 'views'));
Все, что эти test
атрибут ищет, чтобы определить, верно ли что-то, является "верной" строкой (нечувствительный случай). Например, следующий код распечатает "Привет мир!"
<c:if test="true">Hello world!</c:if>
код в <%= %>
возвраты булевская переменная, таким образом, это или распечатает строку, "верную" или "ложную", который является точно, что эти <c:if>
ищет тег.
Можно также использовать что-то как
<c:if test="${ testObject.testPropert == "testValue" }">...</c:if>
< % = %> отдельно будет отправлен в вывод в контексте JSTL, он будет оценен к строке
Атрибуты в библиотеках тегов JSP в целом могут быть или статичными или разрешены во время запроса. Если они будут разрешены во время запроса, то JSP разрешит их значение во времени выполнения и передаст вывод на тег. Это означает, что можно поместить в значительной степени любой код JSP в атрибут, и тег будет вести себя соответственно к тому, что производит, который производит.
при рассмотрении jstl taglib документы, Вы видите, какие атрибуты являются reuest временем и которые не являются. http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html
Выражение между < % = %> оценен, прежде чем тег c:if оценен. Так, если |request.isUserInRole | возвращает |true |, Ваш пример был бы оценен к этому сначала:
<c:if test="true">
<li>user</li>
</c:if>
и затем тег c:if был бы выполнен.