相关疑难解决方法(0)

在h:selectManyCheckbox中使用enum

我想在一个中使用枚举值<h:selectManyCheckbox>.正确填充复选框,但是,在选择某些值并提交它们时,它们的运行时类型是String,而不是枚举.我的代码:

<h:selectManyCheckbox value="#{userController.roles}" layout="pageDirection">
     <f:selectItems value="#{userController.rolesSelectMany}" />
</h:selectManyCheckbox>
Run Code Online (Sandbox Code Playgroud)

UserController类(SecurityRole是枚举类型):

public SelectItem[] getRolesSelectMany() {
    SelectItem[] items = new SelectItem[SecurityRole.values().length];

    int i = 0;
    for (SecurityRole role : SecurityRole.values()) {
        items[i++] = new SelectItem(role, role.toString());
    }
    return items;
}     

public List<SecurityRole> getRoles() {
     getCurrent().getRoles();
}

public void setRoles(List<SecurityRole> roles) {
     getCurrent().setRoles(roles);
}
Run Code Online (Sandbox Code Playgroud)

当JSF调用setRoles方法时,它包含String类型的列表,而不是枚举类型.有任何想法吗?谢谢!

jsf enums jsf-2 selectmanycheckbox

20
推荐指数
1
解决办法
2万
查看次数

如何将List <Integer>值绑定到JSF中的selectManyListbox

情况:我有一个JavaServer Faces页面和一个会话范围的托管bean,它有两个ArrayList<Integer>属性:一个用于保存可能值列表,另一个用于保存选定值列表.在JSF页面上有一个<h:selectManyListBox>绑定了这两个属性的组件.

问题:提交表单后,所选的值将转换为字符串(ArrayList类型的属性实际上包含几个字符串!); 但是,当我使用转换器时,我收到如下错误消息:

验证错误:值无效

问题:如何正确地将ArrayList<Integer>属性绑定到<h:selectManyListBox>组件?

谢谢你的帮助.

具体代码

JSF页面:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:body>
        <h:form>
            <h:selectManyListbox value="#{testBean.selection}">
                <f:selectItems value="#{testBean.list}"></f:selectItems>
            </h:selectManyListbox>
            <h:commandButton action="#{testBean.go}" value="go" />
            <ui:repeat value="#{testBean.selection}" var="i">
                #{i}: #{i.getClass()}
            </ui:repeat>
        </h:form>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

托管bean:

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

@javax.faces.bean.ManagedBean
@javax.enterprise.context.SessionScoped
public class TestBean implements Serializable
{
    private ArrayList<Integer> selection;
    private ArrayList<Integer> list;

    public ArrayList<Integer> getList()
    { …
Run Code Online (Sandbox Code Playgroud)

glassfish jsf-2 managed-bean

2
推荐指数
1
解决办法
5473
查看次数

标签 统计

jsf-2 ×2

enums ×1

glassfish ×1

jsf ×1

managed-bean ×1

selectmanycheckbox ×1