2

カテゴリテーブルがあります

 categoryId
 catName
 description
 image 

に を入力し、その値に を入力<h:selectOneMenu>itemLabel categoryNameますcategoryId

どうすればこれを行うManagedBeanことができますか??

4

4 に答える 4

1

これには SelectItem のリストを使用できます。マネージド Bean で次のような selectitems のリストを生成するメソッドが必要になります。

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>
于 2012-12-21T16:24:50.620 に答える
0

このようなことを試してください

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);
    }
}
于 2014-01-19T13:36:40.407 に答える
0

f:selectItemsタグを使用する必要があります。

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

次に、データベースから取得した値を格納するフィールドYourBeanが必要です。マップのキー (文字列であることが推奨されます) はラベルであり、値は関連付けられたオブジェクトです。Map

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

public Map<String,YourObject> getYourItems() {
    return yourItems;
}
于 2012-12-14T14:23:32.383 に答える