2011-10-16 94 views
-1

我想在JSF中創建一個溫度轉換程序。它有一個文本框和兩個單選按鈕來選擇CEL到FRA和FRA到CEL和一個提交按鈕。我很難得到單選按鈕的值。我已經粘貼代碼下:JSF溫度計算器

的Index.html

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core"> 
    <h:head> 
     <title>Convert Temperature</title> 
    </h:head> 
    <h:body> 
     <h1>Convert Temperature </h1> 
     <f:view> 
      <h:form id="tempForm"> 
       <h:outputText value="Enter Temperature:"/> 
       <h:inputText value="#{tempconvert.temperature}" /> 

       <h:selectOneRadio id ="radio" value="{tempconvert.radChoice}" layout="LINE_DIRECTION"> 
        <f:selectItem itemValue="radOne" itemLabel="CEL to FAR" /> 
        <f:selectItem itemValue ="radTwo" itemLabel="FAR to CEL" /> 
       </h:selectOneRadio> 
       <h:commandButton action="#{tempconvert.ConvertTemp}" value="Convert" /> 
      </h:form> 
      <br /> 
      <h:outputLabel value="#{tempconvert.resultlabel}" /> 
     </f:view> 
    </h:body> 
</html> 

TemperatureConvertBean

package TemperatureConvert; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.RequestScoped; 
import java.util.*; 

@ManagedBean(name = "tempconvert") 
@RequestScoped 
public class TemperatureConvertBean { 
    private double temperature; 
    private String resultlabel; 
    private String radChoice = "radOne"; 

    /** Creates a new instance of TemperatureConvertBean */ 
    public TemperatureConvertBean() { 

    } 

    /** 
    * @return the temperature 
    */ 
    public double getTemperature() { 
     return temperature; 
    } 

    /** 
    * @param temperature the temperature to set 
    */ 
    public void setTemperature(double temperature) { 
     this.temperature = temperature; 
    } 

    /** 
    * @return the resultlabel 
    */ 
    public String getResultlabel() { 
     return resultlabel; 
    } 

    /** 
    * @param resultlabel the resultlabel to set 
    */ 
    public void setResultlabel(String resultlabel) { 
     this.resultlabel = resultlabel; 
    } 

    /** 
    * @return the radChoice 
    */ 
    public String getRadChoice() { 
     return radChoice; 
    } 

    /** 
    * @param radChoice the radChoice to set 
    */ 
    public void setRadChoice(String radChoice) { 
     this.radChoice = radChoice; 
    } 

    public String ConvertTemp() { 

     if (this.getRadChoice().equals("radOne")) 
     { 

      this.resultlabel = "Radio one selected"; 
     } 
     else 
     { 
      this.resultlabel = "Radio two selected"; 

     } 
     return null; 

    } 
} 

感謝。

+0

澄清你的問題,請。你很難理解你有什麼問題。 – maks

+0

我在你的代碼中看不到任何錯誤。我認爲你的bean是'@ RequestScoped',這可能是一個原因。讓它@SessionScoped任何嘗試! 祝你好運! –

+0

即使它工作(我不這麼認爲),它不會是一個解決方案,而是一種解決方法。你基本上濫用這裏的會話範圍。 – BalusC

回答

1

我想這可能會幫助你:

你的代碼(我複製

<h:selectOneRadio id ="radio" value="{tempconvert.radChoice}" layout="LINE_DIRECTION"> 

你的代碼(Editted)

<h:selectOneRadio id ="radio" value="#{tempconvert.radChoice}" layout="LINE_DIRECTION"> 

P/S:這是顯示: 「廣電兩個選中」 當我選擇第二個按鈕。

+0

優秀。它的工作現在。非常感謝@Bachboss – user997611

+0

只是一個「#」字符...下次在發佈問題之前檢查您的語法 – BachT