这个问题在这里已经有答案了:
识别和解决javax.el.propertynotfoundexception:无法到达目标(17个答案)
如何通过maven正确地安装和配置jsf库(1个答案)
javaee到底是什么(4个答案)
11个月前关门了。
我看到有很多类似的问题和答案,为我的情况,但问题是没有他们为我工作!我正在尝试学习jsf和springboot,我已经为他们使用了一些教程来管理这个简单的小代码,但是它不起作用。问题是eclipse知道我的托管bean及其在jsf页面中的属性,并且我的页面呈现得非常完美,但是当我输入数字并单击任何命令按钮时,就会出现错误!我想它可能找不到目标类,所以我试着用
<build>
<outputDirectory>src\main\webapp\WEB-INF\classes</outputDirectory>
但没什么不同!你能帮帮我吗?我的pom.xml是:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tebmahani</groupId>
<artifactId>Memorist</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- https://mvnrepository.com/artifact/javax/javaee-api -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0.1</version>
<!-- <scope>provided</scope> -->
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
<!-- <scope>provided</scope> -->
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.faces/jsf-api -->
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.20</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.faces/jsf-impl -->
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.20</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<!-- <scope>provided</scope> -->
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<!-- <scope>provided</scope> -->
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>2.0</version>
<!-- <scope>provided</scope> -->
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.el/el-ri -->
<dependency>
<groupId>com.sun.el</groupId>
<artifactId>el-ri</artifactId>
<version>1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>9.0.35</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.6.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<outputDirectory>src\main\webapp\WEB-INF\classes</outputDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<failOnMissingWebXml>true</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
我的托管bean是:
package com.tebmahani.tinyCalculator;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named("tinyCalculator")
@RequestScoped
public class TinyCalculator {
private double _param1;
private double _param2;
private double _result;
public TinyCalculator() {}
public TinyCalculator(double param1, double param2, double result) {
super();
this._param1 = param1;
this._param2 = param2;
this._result = result;
}
public double getParam1() {
return _param1;
}
public void setParam1(double param1) {
this._param1 = param1;
}
public double getParam2() {
return _param2;
}
public void setParam2(double param2) {
this._param2 = param2;
}
public double getResult() {
return _result;
}
public void setResult(double result) {
this._result = result;
}
public String add() {
this._result = _param1 + _param2;
return "";
}
public String subtract() {
this._result = _param1 - _param2;
return "";
}
public String multiply() {
this._result = _param1 * _param2;
return "";
}
public String divide() {
this._result = _param1 / _param2;
return "";
}
}
1条答案
按热度按时间5n0oy7gb1#
我要写一个答案,不能解决你的问题,但有太多的错误,在你的pom,它不适合在评论。。。
使用src文件夹作为输出文件夹是错误的。。。千万不要这样做。有一个目标文件夹,如果有些东西由于奇怪的原因没有到达那里,请将它们添加到正确的目标位置,而不是src文件夹。检查课程是否在那里很简单。
这是完整的javaeeapi,如果您运行一个真正的javaee服务器,就需要它。它应该有提供的范围。。。总是。如果您不运行javaee服务器,但是运行类似于tomcat的东西,那么很可能会有一个“web概要文件”api,但是它应该是针对真实应用服务器的轻版本的,仍然不是类似于tomcat的东西。所以这个api应该被删除。
因此,假设javaeeapi8jar现在出现在您的应用程序中。那么这两个以前的api已经存在了,很可能是在其他版本(jsf版本2.3,inject-idential)中,这很可能会引起问题。
有一个JSF2.3版本,您有一个2.3API。所以你已经用“旧”版本开始你的旅程了。
这里提到的库也已经在javaeeapi中了,所以也需要复制。即使您没有javaeeapi,也只需要cdi。其他的都应该提供。
这一个重复了以前的几个API。。。由于它们有不同的maven groupid,artifactid将被包括在内。实现还可以,但是对于一些api,您现在有三个jar。。。
所以请从清理这些开始。。。使用“joinfaces”为您完成这一切是一件好事!