开发者

How to link two values to dropdown in JSF?

开发者 https://www.devze.com 2023-02-06 09:55 出处:网络
I have created entites and facde in netbeans. Now I want to create a native query to get only two feilds from the table. And then Bind them to the

I have created entites and facde in netbeans. Now I want to create a native query to get only two feilds from the table. And then Bind them to the

String query = "SELECT DISTINCT(m.idManufacturer),m.hmid "
                + " FROM model m";

@SuppressWarnings("unchecked")
List<model> modelList = (List&lt;model>) g开发者_Go百科etEntityManager().createNativeQuery(query).getResultList();

and then I used this code

<f:selectItems itemLabel="#{myController.modelList.idManufacturer}"/>

to show values in dropdown. But that doesn't seem working. Any ideas?


Try creating list of selectItems from your List<Model> and give that in value attribute.

e.g.

List<SelectItem> modelList = new ArrayList<SelectItem>();
  //implement your conversion label value here.
<f:selectItems value="#{myController.modelList}"/>


If you're on JSF 1.x, you need to provide a SelectItem[], List<SelectItem> or Map<String, Object> to the value of f:selectItems. The most common choice is a List<SelectItem>. Assuming that you want to use Model#getIdManfacturer() (which I assume to be a Long) as both item label and value, here's an example:

public class Bean {
    private Long selectedManfacturerId; // +getter +setter
    private List<SelectItem> selectManfacturerIds; // +getter

    @PostConstruct
    public void init() {
        selectManfacturerIds = new ArrayList<SelectItem>();
        List<Manfacturer> manfacturers = getItFromDatabaseSomehow();
        for (Manfacturer manfacturer : manfacturers) {
            selectManfacturerIds.add(new SelectItem(manfacturer.getManfacturerId()));
        }
    }

    // ...
}

in combination with

<h:selectOneMenu value="#{bean.selectedManfacturerId}">
    <f:selectItems value="#{bean.selectManfacturerIds}" />
</h:selectOneMenu>

However, if you're already on JSF 2.0, then you can also just use a List<SomeBean> for this. The new var attribute in a JSF 2.0 <f:selectItems> allows you to declare the iterated item in the view. Kickoff example:

public class Bean {
    private Long selectedManfacturerId; // +getter +setter
    private List<Manfacturer> manfacturers; // +getter

    @PostConstruct
    public void init() {
        manfacturers = getItFromDatabaseSomehow();
    }

    // ...
}

in combination with

<h:selectOneMenu value="#{bean.selectedManfacturerId}">
    <f:selectItems value="#{bean.manfacturers}" var="manfacturer" itemValue="#{manfacturer.manfacturerId}" />
</h:selectOneMenu>
0

精彩评论

暂无评论...
验证码 换一张
取 消