-1

我先为这个项目做了一个sql,zdsql:</p>

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的主要部分:

<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>

以下代码是 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什么都没有,应该有两个selectitem,值应该和sql一样。

4

2 回答 2

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 版中。

于 2013-07-22T14:23:28.630 回答
0

非常感谢波尔潘!我在 faces-config.xml 中添加了 ManagedBean,然后我得到了正确的结果!感谢大家的帮助!

但是我第一次使用这个网站,你能告诉我如何关闭问题并选择最佳答案吗?

于 2013-07-22T14:18:08.003 回答