当前位置: 首页 > 知识库问答 >
问题:

如何在jsf中从数据库表中填充h:selectOneMenu?[重复]

扶高歌
2023-03-14

我有个分类表

 categoryId
 catName
 description
 image 

我想填充

它应该使用ManagedBean完成,我怎么能这样做??


共有3个答案

锺英彦
2023-03-14

试试这样

xhtml

    <h:form>
        <h:panelGrid>
            <h:selectOneMenu value="#{myMB.id}">
                <f:selectItem itemLabel="Please select one" itemValue="#{null}" />
                <f:selectItems value="#{myMB.items}" />
            </h:selectOneMenu>
        </h:panelGrid>
        <h:commandButton action="#{myMB.go}" value="Go"/>
    </h:form>

兆字节

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

@ManagedBean
@ViewScoped
public class MyMB implements Serializable{

    private static final long serialVersionUID = 1L;
    private List<SelectItem> items = new ArrayList <SelectItem> ();
    private Long id;

    @PostConstruct
    public void init(){
        SelectItem si = new SelectItem();
        si.setLabel("My Label");
        si.setValue(666L);

        items.add(si);
    }

    public List<SelectItem> getItems() {
        return items;
    }

    public void setItems(List<SelectItem> items) {
        this.items = items;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void go(){
        System.out.println(id);
    }
}
柳俊健
2023-03-14

你必须使用f:selectItems标签:

<h:selectOneMenu value="#{yourBean.itemValue}">                     
    <f:selectItems value="#{yourBean.yourItems}" />
</h:selectOneMenu>

然后,YourBean需要有一个Map字段,存储从数据库中获取的值,其中map的键(我建议是字符串)是标签,值是关联的对象。

Map<String,YourObject> yourItems = new HashMap<String,YourObject>();

public Map<String,YourObject> getYourItems() {
    return yourItems;
}
百里芷阳
2023-03-14

您可以为此使用SelectItem列表。您将需要一个方法来生成selectitems列表,如托管bean中的下面一个,

public List<SelectItem> getAllCatagories(){

   List<SelectItem> items = new ArrayList<SelectItem>();
   List<Category> categoryList = dao.getAllCategory();
    for(Category category: categotyList){
       items.add(new SelectItem(category.getCategoryId(), category.getName()));
   }
   return items;
}

并像这样使用它

<h:selectOneMenu value="#{controllerBean.selectedCategory}" >
            <f:selectItems value="#{controllerBean.allCategories}"/>
</h:selectOneMenu>
 类似资料:
  • 我正在创建一个web应用程序,您必须从数据库中读取对象/实体的列表,并将其填充到JSF

  • 我正试图用图表可视化以下数据集。js 到目前为止,我已经知道如何使用日期作为标签。 我想在这个图表中以三行显示“确认”、“死亡”和“恢复”的值。因此,我将包括三个不同的数据集,对吗?如何从json作为数组访问所需的信息来填充数据数组? 谢谢你的支持

  • 我有一个有两列的表,一个是string,另一个是double Type。例如, 我正在尝试读取所有的值,并将它们加载到中 我在读取表数据方面没有任何问题,但不能按我的要求将它们放入HashMap中。 我编写了一个示例代码来从两个不同的数组(string和double)填充一个HashMap,但仍然无法处理HashMap的值部分,它是一个数组。 任何建议我如何处理HashMap的值部分,它是一个数组

  • 我首先构建了一个ListView,它包含多个没有Firebase的TextViews,并且运行良好(注意:我将数据存储在字符串数组中)。然后,我创建了一个ListView(ArrayAdapter)和一个带有Firebase的TextView,它也运行良好(注意:我将数据存储在ArrayList中)。但是一旦我将这两个项目合并在一起,它就不起作用了(注意:这个项目中存在多个TextView,但我现

  • 问题内容: 我创建了一个GUI,并在外部获取了一个数据库。我正在NetBeans中使用GUI构建器来执行此操作。有谁知道用来自数据库的值填充jComboBox的简单方法吗?当我运行项目时,没有错误,但组合框保持为空。 这是设置带有折扣名称的组合框的代码: 它位于与jComboBox对象不同的类中。此类称为模型。 这是我以称为DiscountGUIView的形式调用setDiscountNames方

  • 我有一个基于类的视图(IndexView at views.py),它显示了一个包含数据库中存储的所有数据的表。此视图在索引中呈现。html使用获取所有数据。还没有问题。 对我来说,困难的部分是尝试使用表单来完成它,以便能够修改和保存金额列。我对POST部分没有问题,我使用AJAX来保存新值。我遇到的问题是从数据库中获取初始值以填充Django表单(forms.py) 我尝试在表单字段的定义中使用