Подтвердить что ты не робот

Согласно TLD или директиве атрибута в файле тега, элементы атрибута не принимают никаких выражений

У меня есть проект, где мне нужно отображать детали фильмов на странице HTML. Я должен строго следовать MVC, хотя я не использую фреймворк вроде Spring или Struts. Мне также запрещено использовать скрипты, но используйте JSTL и язык выражений. Я обычно извлекаю данные из базы данных, а затем устанавливаю их в bean, а затем создаю список этих bean и передаю их в JSP, а затем распечатываю эти данные. Но как я могу это достичь, если мне не разрешено использовать JSP. Если я использую сервлет, чтобы извлечь эти данные и установить его в bean, а затем в список и передать его через диспетчер запросов, как мне получить каждый bean из списка на странице HTML?

Я не мог заставить этот JSTL работать. Я использую Netbeans 7.0 и Apache Tomcat 7.

 <%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>DVD Guru</title>
        <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    </head>
    <body>   
     <div id="wrapper">     
        <c:set var="testing" value="blah"/>
                <c:out value="${testing}"/>
        </div>      
    </body>
</html>

Я получаю следующую ошибку

В соответствии с TLD или директивой атрибута в файле тега элементы атрибута не принимают никаких выражений

Я импортировал библиотеку JSTL 1.1 из свойств проекта. Должны ли что-нибудь еще сделать?

4b9b3361

Ответ 1

Вы должны использовать JSP, JSTL - это просто набор пользовательских тегов и не может использоваться отдельно. Также как язык выражений. Если вы не используете какие-либо рамки MVC, вам нужно выполнить часть своей работы самостоятельно. Пожалуйста, посмотрите (если вы еще этого не сделали) по следующим шаблонам проектирования:

  • Front Controller, Command для простого приложения
  • Front Controller, View Helper для более сложного приложения

UPD

Чтобы решить проблему с помощью EL, попробуйте исправить JSTL-uri в вашем JSP, чтобы:

 <%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>

Ответ 2

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

Ваш URI JLLL taglib неверен. Тот, который у вас есть, предназначен для устаревшего JSTL 1.0. Поскольку JSTL 1.1 содержит дополнительный путь /jsp в URI taglib, потому что язык выражений (те ${} вещи) был перенесен из JSTL в JSP, и поэтому taglibs JSTL 1.0 и 1.1 не являются взаимозаменяемыми.

Исправьте его соответствующим образом:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

Больше ничего не нужно делать, предполагая, что Netbeans достаточно умен, чтобы автогенерировать совместимый с Servlet 3.0 web.xml для Tomcat 7.

См. также:

Ответ 3

Измените JSTL taglib uri на следующее:

<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

Он работает как шарм.

Ответ 4

Вы можете генерировать HTML даже путем объединения строк. Или вы можете использовать любые двигатели текстовых шаблонов, такие как простой JMTE (Java Minimal Template Engine) или более продвинутый, например Velocity или StringTemplate. Используя другой механизм шаблонов, вы можете смело заявить, что не используете JSP. Хотя я не вижу большой разницы между JSP и другими механизмами шаблонов, я имею в виду, что это ваше требование - глупо.

Еще лучше: не используйте JSP JSF 2! )

Ответ 5

Попробуйте использовать префикс <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> вместо <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

Ответ 6

Я столкнулся с этой проблемой при попытке использовать переменную в XML файле jstl, я хочу использовать randInt в <x:out select/>:

<x:out select="$parsedXML/content/${randInt}/title"/>

Решил его с помощью pageContext

<%
    Random rand = new Random();
    int randInt = rand.nextInt();
    pageContext.setAttribute("randInt", randInt);
%>
<x:out select="$parsedXML/content/article[$pageScope:randInt]/title"/>