Hallo zusammen,
ich versuche mit JSF eine Stringcalculator zu entwickeln. Leider bekomme ich bei der Methodenaufruf eine NullPointerException zurück. Ich habe zwei Klassen und zwar Calculator und Parser. Die Klasse Calculator (mit TomCat) wird ganz normal angezeigt. Sobald ich die Methode addieren() aufrufe bekomme ich nullpointer. Wenn ich mit new parser() deklariere klappt es... aber mit @Inject gibt es glaube ich ein problem :/
ich versuche mit JSF eine Stringcalculator zu entwickeln. Leider bekomme ich bei der Methodenaufruf eine NullPointerException zurück. Ich habe zwei Klassen und zwar Calculator und Parser. Die Klasse Calculator (mit TomCat) wird ganz normal angezeigt. Sobald ich die Methode addieren() aufrufe bekomme ich nullpointer. Wenn ich mit new parser() deklariere klappt es... aber mit @Inject gibt es glaube ich ein problem :/
Java:
package calculator.binaris;
import javax.faces.bean.ManagedBean;
import javax.inject.Inject;
import javax.inject.Named;
@ManagedBean
public class Calculator {
private String zahl1;
private String zahl2;
@Inject
private Parser parser;
public Calculator() {}
public void setZahl1(String zahl1) {
this.zahl1 = zahl1;
}
public void setZahl2(String zahl2) {
this.zahl2 = zahl2;
}
public String getZahl1() {
return zahl1;
}
public String getZahl2() {
return zahl2;
}
public String addieren() {
return Integer.toString(parser.parseTheNumber(this.zahl1) + parser.parseTheNumber(this.zahl2));
}
public String zeichenAdd() {
return this.zahl1+this.zahl2;
}
}
Java:
package calculator.binaris;
import javax.enterprise.context.Dependent;
import javax.inject.Named;
@Dependent
public class Parser {
public int parseTheNumber(String zahl) {
return Integer.parseInt(zahl);
}
}
HTML:
<?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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Student FOUR Registration Form</title>
<style>
.error {color:red}
</style>
</h:head>
<h:body>
<h:form>
Zahl 1: <h:inputText value="#{calculator.zahl1}"
label="First name" />
<br/><br/>
Zahl 2: <h:inputText value="#{calculator.zahl2}"
label="Last name" />
<br/><br/>
<h:commandButton value="Submit" action="calculator_result" />
</h:form>
</h:body>
</html>
HTML:
<?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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Student FOUR Registration Form</title>
<style>
.error {color:red}
</style>
</h:head>
<h:body>
<h:form>
Zahl 1: <h:inputText value="#{calculator.zahl1}"
label="First name" />
<br/><br/>
Zahl 2: <h:inputText value="#{calculator.zahl2}"
label="Last name" />
<br/><br/>
<h:commandButton value="Submit" action="calculator_result" />
</h:form>
</h:body>
</html>
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<beans bean-discovery-mode="all" version="2.0"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"/>
Code:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
</faces-config>
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>calculatorW</display-name>
<welcome-file-list>
<welcome-file>calculator.xhtml</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
</web-app>
HTML:
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>calculatorW</groupId>
<artifactId>calculatorW</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.9</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.9</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>
</project>