元数据标记在jsf中不起作用

时间:2013-12-10 09:55:33

标签: jsf taglib jspx

我正在尝试使用viewparam设置变量,但我似乎无法在eclipse中编译代码。好像它没有找到标签。

我使用了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)

1 个答案:

答案 0 :(得分: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