2013-12-10 80 views
0

我想設置一個變量與viewparam,但我似乎無法得到代碼在Eclipse中編譯。它似乎沒有找到標籤。元數據標記不工作在jsf

我已經使用了mojarra 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>在JSP中不可用(分別參見JSF 2.2 specification (JSR-344)的第10.4.1.3和2.5.5節)。

解決方案很簡單:切換到facelets作爲視圖技術。

它也要求改用因爲JSF 2.2已經提出了新的命名空間,即http://java.sun.com現在應該成爲http://xmlns.jcp.org(見前言中,JSF 2.2 specification (JSR-344) 8頁),雖然雙方的命名空間會工作。另見BalusC's comment to this answerBalusC'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