2013-12-10 7 views
0

Я пытаюсь установить переменную с помощью viewparam, но я не могу заставить код компилироваться в eclipse. Похоже, он не находит теги.тег метаданных не работает в jsf

У меня есть моджарра 2.2, и я использую jsf-api-2.2.4 и impl.

<?xml version="1.0" encoding="UTF-8" ?> 
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" version="2.0"> 
    <jsp:directive.page language="java" 
     contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" /> 
    <jsp:text> 
     <![CDATA[ <?xml version="1.0" encoding="UTF-8" ?> ]]> 
    </jsp:text> 
    <jsp:text> 
     <![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ]]> 
    </jsp:text> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:c="http://java.sun.com/jsp/jstl/core"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

<title>Insert title here</title> 
</head> 
<body> 
<f:view> 

test 
<f:metadata> 
     <f:viewParam name="id" value="#{bowlingEvent.ID}" /> 
    </f:metadata> 

<h:form> 
<h:inputText id="id" /> 
<h:commandButton id="button" value="Spara event" action="update"> 

</h:commandButton> 
</h:form> 

</f:view> 
</body> 
</html> 
</jsp:root> 

org.apache.jasper.JasperException: /update.jsp (line: 25, column: 13) No tag "metadata" 
defined in tag library associated with uri "http://java.sun.com/jsf/core" 
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42) 

ответ

2

Ваша основная ошибка заключается в том, что JSP - это устаревшая технология просмотра и, очевидно, является неправильным инструментом для новых проектов. Ему удалось использовать facelets, который является технологией просмотра по умолчанию для проектов JSF 2.0+.

Некоторые теги, а именно те, которые используются вами как <f:metadata> и <f:viewParam> не доступны в JSPs (см разделы 10.4.1.3 и 2.5.5 из JSF 2.2 specification (JSR-344) соответственно).

Решение прост: переключитесь на лицевые стороны как на технологию просмотра.

Он также просил, чтобы перейти к использованию новых пространств имен, которые были предложены, так как JSF 2.2, а именно http://java.sun.com теперь должен стать http://xmlns.jcp.org (см предисловие, стр 8 из JSF 2.2 specification (JSR-344)), хотя оба пространства имен будут работать. Также см. BalusC's comment to this answer и BalusC's answer to a similar question.

+0

@BalusC Необходимо изменить пространство имен, чтобы настроить представление JSF 2.2, не так ли? Или я неправильно истолковал спецификацию? – skuntsel

+1

* «Разработчикам предлагается использовать значения из столбца New URI **, хотя оба столбца будут работать **.» * Обратите внимание, что в Mojarra 2.2.0/2.2.1 была ошибка пространства имен, в которой новое пространство имен не было правильно адресуйте все компоненты. Если модернизация Mojarra не была вариантом, использование старого пространства имен было бы решением. См. Также среди других http://stackoverflow.com/questions/18517384/fviewparam-doesnt-pass-required-parameter-when-new-xmlns-jcp-org-namespace-is/18517592#18517592 – BalusC

+0

@BalusC Спасибо за Информация. Я не читал его достаточно тщательно. – skuntsel

Смежные вопросы