I saw there is a lot of similar questions and answers for my situation, but the problem is none of them worked for me! I'm trying to learn JSF and Spring boot and I've used some tutorials for them to manage this little simple code, but It does not work. The problem is Eclipse knows my Managed Bean and it's properties in jsf page, and my page renders perfectly, but when I enter numbers and click on any of my command buttons, the error appears! I thought maybe it cannot find target classes, so I tried to define it with
<build>
<outputDirectory>src\main\webapp\WEB-INF\classes</outputDirectory>
but nothing different happened! Would you please help me? My pom.xml is:
<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>
and my Managed Bean is:
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 "";
}
}