如何避免/抑制 JSF <h:selectOneMenu /> null(无选择选项)选项卡?



当创建一个新项目时,用户不希望在Select-One菜单中看到空的no选择选项,而是直接从可用的项目中看到一个项目。因此,要么去掉null no选项,要么直接在下拉菜单中显示第二个元素。我尝试了属性hideNoSelection,但它什么也不做。我怎样才能做到这一点呢?

<h:selectOneMenu id="ugroup" value="#{usersController.selected.ugroup}" title="#{bundle.CreateUsersTitle_ugroup}" required="true" requiredMessage="#{bundle.CreateUsersRequiredMessage_ugroup}">

</h:selectOneMenu>

---------------- 编辑(@Balus回答之后 ) ---------------------下面是获取JPA列表以显示为<h:selectOneMenu />的Utility方法:

public class JsfUtil {
    public static SelectItem[] getSelectItems(List<?> entities, boolean selectOne) {
        int size = selectOne ? entities.size() + 1 : entities.size();
        SelectItem[] items = new SelectItem[size];
        int i = 0;
        if (selectOne) { // part to be removed
            items[0] = new SelectItem("", "---");
            i++;
        } // end of part to be removed
        for (Object x : entities) {
            items[i++] = new SelectItem(x, x.toString());
        }
        return items;
    }

显然,我所要做的就是删除这部分?:

 if (selectOne) {
                items[0] = new SelectItem("", "---");
                i++;
            }  
但是,由于这个静态方法在我的代码中无处不在,它会有任何不想要的后果吗?
  • 就像,当用户想要一个空值从 <h:selectOneMenu /> ,如果他决定不选择选项。我的猜测是使用 <f:selectItem :

确保#{ugroupController.itemsAvailableSelectOne}不包含数组或列表中值为null的项。第一项将是默认选择的选项。

或者,在bean(后)构建期间,使用所需项目的值预置#{usersController.selected.ugroup}后面的属性。

相关内容

  • 没有找到相关文章

最新更新