我正在尝试使用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)
答案 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 answer和BalusC's answer to a similar question。