2013-02-08 80 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