2017-03-24 5 views
-1

Ich habe ein Problem mit meiner JSF-Seite. Es soll Temperaturen umrechnen (Fahrenheit, Celsius, Kelvin) aber es wird aus irgendeinem Grund nicht funktionieren.Meine JSF-Seite funktioniert nicht

Hier ist die xhtml-Datei convtemp.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://xmlns.jcp.org/jsf/html" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:f="http://xmlns.jcp.org/jsf/core"> 
<h:head> 
    <title>Facelet Title</title> 
</h:head> 
<h:body> 
    <p:layout fullPage="true"> 
      <p:layoutUnit position="north"> 
       <h1>Temperaturkonverter</h1> 
      </p:layoutUnit> 
      <p:layoutUnit position="center"> 
       <p:outputLabel value="Geben Sie eine Temperatur ein."/> 
       <br/> 
       <p:inputText value ="#{temperatur.temp}"/> 
       <hr/> 
       <p:outputLabel for="temper" value="Einheit des eingegebenen Wertes:" /> 
       <p:selectOneListbox id="temper" value="#{temperatur.einheit}"> 
     <f:selectItem itemLabel="Celsius" itemValue="c" /> 
     <f:selectItem itemLabel="Kelvin" itemValue="k" /> 
     <f:selectItem itemLabel="Fahrenheit" itemValue="f" /> 
    </p:selectOneListbox> 
       <h:commandButton type="submit" action="#{tempControl.convertTemp(temperatur.temp)}" value="BERECHNEN"/> 
    <hr/> 
    <h:outputLabel for ="ergebnis" value="Ergebnisse:"/> 
    <br/> 
    <h:outputLabel id="ergebnis" value="Celsius: #{temperatur.celsius}" rendered="#{temperatur.celsius !=null and temperatur.fahrenheit!= null and temperatur.kelvin != null}"/> <br /> 
    <h:outputLabel id="ergebnis2" value="Fahrenheit: #{temperatur.fahrenheit}" rendered="#{temperatur.celsius !=null and temperatur.fahrenheit!= null and temperatur.kelvin != null}"/> <br /> 
    <h:outputLabel id="ergebnis3" value="Kelvin: #{temperatur.kelvin}" rendered="#{temperatur.celsius !=null and temperatur.fahrenheit!= null and temperatur.kelvin != null}"/> 

      </p:layoutUnit> 
    </p:layout> 
</h:body> 

Hier ist das Modell Temperatur.java

package model; 

import java.util.HashMap; 
import java.util.Map; 
import javax.inject.Named; 

/** 
* 
* @author anhev 
*/ 
@Named ("temperatur") 
public class Temperatur { 

private double celsius; 
private double kelvin; 
private double fahrenheit; 
private String einheit; 


private double temp; 


public Temperatur() { 

} 


public double getCelsius() { 
    return celsius; 
} 

public void setCelsius(double celsius) { 
    this.celsius = celsius; 
} 

public double getKelvin() { 
    return kelvin; 
} 

public void setKelvin(double kelvin) { 
    this.kelvin = kelvin; 
} 

public double getFahrenheit() { 
    return fahrenheit; 
} 

public void setFahrenheit(double fahrenheit) { 
    this.fahrenheit = fahrenheit; 
} 



public String getEinheit() { 
    return einheit; 
} 

public void setEinheit(String einheit) { 
    this.einheit = einheit; 
} 

public double getTemp() { 
    return temp; 
} 

public void setTemp(double temp) { 
    this.temp = temp; 
} 
} 

Und schließlich die Steuerung TempControl.java

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package ctrl; 


import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.faces.context.FacesContext; 
import javax.inject.Named; 
import javax.servlet.http.HttpServletResponse; 
import model.Temperatur; 

    /** 
    * 
    * @author anhev 
    */ 
    @Named ("tempControl") 
public class TempControl { 

private Temperatur temperatur; 
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); 
public void convertTemp(double temperaturIn){ 

    switch(temperatur.getEinheit()){ 
     case "c": 
      temperatur.setCelsius(temperaturIn);     
      temperatur.setFahrenheit(temperaturIn * 1.8 + 32); 
      temperatur.setKelvin(temperaturIn + 273.15); 
    { 
     try { 
      response.sendRedirect("convtemp.xhtml"); 
     } catch (IOException ex) { 
      Logger.getLogger(TempControl.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
      break; 

     case "k": 
      temperatur.setKelvin(temperaturIn); 
      temperatur.setCelsius(temperaturIn - 273.15); 
      temperatur.setFahrenheit(temperaturIn * 1.8 - 459.67); 
    { 
     try { 
      response.sendRedirect("convtemp.xhtml"); 
     } catch (IOException ex) { 
      Logger.getLogger(TempControl.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
      break; 

     case "f": 
      temperatur.setFahrenheit(temperaturIn); 
      temperatur.setCelsius((temperaturIn - 32)/1.8); 
      temperatur.setKelvin((temperaturIn + 459.67)/1.8); 
    { 
     try { 
      response.sendRedirect("convtemp.xhtml"); 
     } catch (IOException ex) { 
      Logger.getLogger(TempControl.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
      break; 


     default: 
      System.out.print("Error"); 
      break;} 
    } 
} 
+2

"Wird nicht funktionieren" ist eine sehr faule und nutzlose Beschreibung eines Problems. – csmckelvey

+0

Bitte beschreiben Sie das Problem .. Wenn Sie einen Fehler bekommen haben, dann fügen Sie Stack-Trace zu Ihrer Frage hinzu. – RamPrakash

Antwort

1

Sie müssen Ihren Inhalt in ein Formular eingeben:

<h:body> 
    <h:form> 
     ... your code 
    </h:form> 
</h:body> 

Ich hoffe, diese Arbeit mit Ihnen.

+1

Vielen Dank, es hat funktioniert! – qwertz