2013-07-22 24 views
-1

我第一次做了一個SQL,zdsql,爲這個項目:在JSF中,如何將參數值形成我的sql到jsf頁面?

create table zdsql(
    id integer primary key, 
    filter varchar(12), 
    value varchar(12), 
    descri varchar(12), 
    standard_number integer,     
    language varchar(12) 
); 

insert into zdsql values(1,'zdlj','1','1.rid',1,'en'); 
insert into zdsql values(2,'zdlj','2','2.ria',1,'en'); 

接下來,我做了JSF,下面的代碼是我的XHTML maining:

<h:outputLabel value="#{msgs.zdlj}" style="font-weight:bold" /> 
<p:selectOneMenu id="zdlj1" value="#{zsjBean.zdlj}"> 
    <f:selectItems value="#{zdsqlBean.zdsqls}" var="bll1" 
      itemLabel="#{bll1.descri}" itemValue="#{bll1.value}" /> 
</p:selectOneMenu> 

的follwing代碼是主要的zdsqlBean:

package bean; 

import java.util.List; 
import java.util.logging.Level; 

import javax.persistence.TypedQuery; 

import model.Zdsql; 

import util.DBDAO; 

public class ZdsqlBean { 


private List<Zdsql> zdsqls; 


public ZdsqlBean() { 
    this.genzdljs(); 
} 


public List<Zdsql> getZdsqls() { 
    System.out.println("zdsqls=="); 
    return zdsqls; 
} 

public void setZdsqls(List<Zdsql> zdsqls) { 
    this.zdsqls = zdsqls; 
} 




public void genzdljs() { 
    try { 
     String queryString = "select m from Zdsql m where m.filter = :filter Order by m.id"; 
     TypedQuery<Zdsql> query = DBDAO.getEntityManager().createQuery(
       queryString, Zdsql.class); 
     query.setParameter("filter", "zdlj"); 
     zdsqls = query.getResultList(); 

    } catch (Exception re) { 
     DBDAO.log("genzdljs() failed", Level.SEVERE, re); 
    } 
} 

但是,我仍然沒有得到正確的值。當我運行這個項目時,selectonemenu沒有任何東西,它應該有兩個選擇項,值應該與sql相同。

+0

你在哪裏調用'genzdljs()'函數? – Freak

+0

假設您已經在'faces-config.xml'中添加了ManagedBean映射,因爲您沒有對'ZdsqlBean'類中的ManagedBean進行任何註釋。 – user75ponic

+0

檢查@Polppan說什麼。從這個公寓,檢查你的'genzdljs'方法是否正確加載值。 –

回答

0

非常感謝Polppan!我在faces-config.xml中添加ManagedBean,然後獲得正確的結果!感謝大家的幫助!

但我首先使用這個網站,你能告訴我怎麼收的問題,並選擇最佳答案?

+0

不客氣。這裏的問題沒有關閉,任何人都可以回答並發表評論。所以你有很多選擇來選擇正確的答案。爲了選擇正確答案,請點擊每個答案左側上下箭頭下面的綠色勾號,如果答案滿足您的問題,您應該注意。 – user75ponic

1

從意見,問題是,你還沒有配置ZdsqlBean爲託管bean。有兩種方法可以做到這一點:

  1. 添加配置在faces-config.xml文件:

    <managed-bean> 
        <managed-bean-name>zdsqlBean</managed-bean-name> 
        <managed-bean-class>bean.ZdsqlBean</managed-bean-class> 
        <managed-bean-scope>none</managed-bean-scope> 
    </managed-bean> 
    
  2. 由於JSF 2,使用@ManagedBean註釋裝飾類。

    @ManagedBean(name="zdsqlBean") //name is optional 
    public class ZdsqlBean { 
        //class definition 
    } 
    

這是覆蓋在一個體面的JSF教程,你可以找到一些StackOverflow JSF wiki。如果您正在學習/閱讀JSF 1.x資源,會將它們放入並使用JSF 2.請注意,目前它的版本爲2.2。