h:selectOneMenu选中的字段是'null'与@Named和@Produces?

时间:2016-03-30 20:38:04

标签: jsf cdi

为什么这不起作用?下拉列表已填充好,但在提交表单时,selectedCatId字段为空。为什么?请帮忙。

The Bean:

@Model
public class MyBean {
 @Named
 @Produces
 private Long selectedCatId;

 @Named
 @Produces
 private List<Category> cats;
}

页面:

<h:selectOneMenu value="#{selectedCatId}">
        <f:selectItems value="#{cats}" var="cat"
            itemValue="#{cat.id}" itemLabel="#{cat.name}" />
</h:selectOneMenu>

1 个答案:

答案 0 :(得分:2)

您无法分配给bean,只能分配给bean属性。

只需从您的成员中移除@Named @Produces,将@Named添加到MyBean,然后将#{selectedCatId}#{cats}替换为#{myBean.selectedCatId}#{myBean.cats}分别。

(这假设cats在某处初始化。)