我使用JSF 2.2, Jboss 7。在运行时,它只是说"标签库支持命名空间:http://java.sun.com/jsf/html,但没有为name: inputFile定义标签"这个错误。谁来帮我解决这个问题?
下面是该xhtml文件。错误在"这一行。
index.xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
Hello from Facelets
<h:form enctype="multipart/form-data">
<h:inputFile value="#{demoBean.file1}" /><br/>
<h:inputFile value="#{demoBean.file2}" /><br/>
<h:commandButton value="Upload" action="#{demoBean.upload()}"/>
</h:form>
</h:body>
</html>
Dependencies-pom.xml:
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>bootstrap</artifactId>
<version>1.0.9</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
我在maven和pom文件中提到的所有库。此外,除了"标签,所有其他标签都在工作,我搜索了,但这还没有解决。知道我是个简单的错误。我不明白,JSF是新手。很多人遇到过这个问题,给我一些解决方法。
如果您实际上不使用JSF 2.2,就会发生这种情况。
JBoss 7在默认情况下以Mojarra 2.1.x的形式提供了JSF 2.1。您的pom建议您手动升级到Mojarra 2.2.2,这反过来是不可能的,因为它是从Mojarra 2.2已知的。只有2.2.8及更新的版本与JBoss 7兼容(旧版本在部署期间会抛出WeldContextNotActiveException
)。按照JBoss as/EAP/WildFly中升级JSF/Mojarra的说明进行升级,它应该可以工作。并且,利用这个机会将java.sun.com
的JSF 2.0/2.1 XML名称空间域迁移到xmlns.jcp.org
的JSF 2.2 XML名称空间域。