2013-02-08 76 views
0

我得到幾下我的價值觀的黃線說:unkown property values不明財產價值

<p:spinner min="1" max="50" value="#{printerSettings.p}" size ="1"> <!-- allows the user a choice of up to 50, this is more than enough for any situation, if needed this can be removed or raised --> 
         <p:ajax update="p"/> 
        </p:spinner> 
        <br></br> 
        <br></br> 
        <h:outputText value="Copies that will be printed: &nbsp; #{printerSettings.p}" id="p"/> 
        <br></br> 
        <br></br> 


        Double sided?: 

        <br></br> 
        <br></br> 

        Paper Size : 
        <h:selectOneMenu value="#{printerSettings.selectedPaper}"> 
         <f:selectItems value="#{printerSettings.selectedPaperValue}" /> 
        </h:selectOneMenu> 

        <br></br> 
        <br></br> 

        What time would you like the printer to print out your work ?, please enter the minutes after midnight : 
        <br></br> 

        <br></br> 
        <p:inputText id="timeToPrint" value="#{printerSettings.timeToPrint}" /> 
        <br></br> 

printerSettings.p工作完全正常,他們是printerSettings.selectedPaperprinterSettings.selectedPaperValueprinterSettings.timeToPrint那下面有這些黃線,奇怪的事情它是否從bean中獲取信息,因此我得到一個默認值爲2000的打印時間並且菜單顯示了三個選項,爲什麼這樣做?有什麼不對 ?

這裏是我的臉,配置

<managed-bean> 
     <managed-bean-name>printerSettings</managed-bean-name> 
     <managed-bean-class>richard.fileupload.PrinterSettings</managed-bean-class> 
     <managed-bean-scope>request</managed-bean-scope> 
    </managed-bean> 

這是我的豆

public class PrinterSettings { 

//@NotNull(message = "Please enter a time to print ") 
    private int timeToPrint = 2000; 
    private int p = 1; //sets default value 
    private int time; 
    public String selectedPaper = "A4"; // defualts to A4 

    public int gettimeToPrint() { 
     return (timeToPrint); 
    } 

    public void settimeToPrint(int timeToPrint1) { 
     this.timeToPrint = timeToPrint1; 
    } 

    public int getP() { 
     return (p); 
    } 

    public void setP(int p1) { 
     this.p = p1; 
    } 

    public int gettime() { 
     return (time); 
    } 

    public void settime(int time) { 
     this.time = time; 
    } 

    public String getselectedPaper() { 
     return selectedPaper; 
    } 
    private static Map<String, Object> paperValue; 

    static { 
     paperValue = new LinkedHashMap<String, Object>(); 
     paperValue.put("A5", "A5"); //right hand side is value, may need to change this later on to make compatable with the printers 
     paperValue.put("A4", "A4"); 
     paperValue.put("A3", "A3"); 
    } 

    public Map<String, Object> getselectedPaperValue() { 
     return paperValue; 
    } 
} 

我也注意到在bean我得到的paperValue.put位下一條黃線,說的用法在初始化過程中出現非靜態變量

+0

你有沒有在你的項目中的所有必要的參考?通常你不能實例化靜態對象,所以你可能想檢查一下修改你的代碼。 – 2013-02-08 18:00:48

+0

是的,我認爲我有,我從教程中使用MAP函數,它是奇怪的,他們從他們那裏得到的值,但仍然有這個錯誤 – user2054949 2013-02-08 18:07:22

+0

「奇怪的是它從bean中獲取信息」 - 這是一個正確的行爲,如果你將例如'p:inputText'附加到一個bean的屬性上,它會默認顯示屬性值,你就可以修改它。 「他們下面有這些黃線」我不明白你的意思,但我看到你正在做不好的設計實踐,使用了很多'
'標籤。使用[http://www.jsftoolbox.com/documentation/help/12-TagReference/html/h_panelGrid.html |改爲'h:panelGrid']。 – 2013-02-08 18:08:34

回答

1

我想你會因爲PrinterSettings bean屬性的getter和setter名稱錯誤而發出警告"unknown property in value"。對於selectedPaper屬性的getter名稱應爲getSelectedPaper和setter名稱應爲setSelectedPaper。對於selectedPaperValue屬性的getter名稱應爲getSelectedPaperValue和setter名稱應爲setSelectedPaperValue。對於timeToPrint屬性的getter名稱應爲getTimeToPrint和setter名稱應爲setTimeToPrint

setter的名字應該從set +開始,第一個大寫字母的屬性名稱。 getter的名字應該從第一個大寫字母的get +名字開始。

JSF使用getters和setter來訪問POJO的屬性。

+0

謝謝你的解釋 – user2054949 2013-02-10 15:32:24