程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在JSF中将List <Integer>值绑定到selectManyListbox大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在JSF中将List <Integer>值绑定到SELEctManyListbox?

开发过程中遇到如何在JSF中将List <Integer>值绑定到SELEctManyListbox的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在JSF中将List <Integer>值绑定到SELEctManyListbox的解决方法建议,希望对你解决如何在JSF中将List <Integer>值绑定到SELEctManyListbox有所启发或帮助;

通用类型信息List<Integer>在运行时会丢失,因此仅看到的JsF / ELList无法识别该通用类型Integer并将其假定String为默认类型(因为这是httpServletrequest#getParameter()应用请求值阶段中基础调用的默认类型)。

你需要要么显式地指定一个Converter,你可以使用JsF内置IntegerConverter

<h:SELEctManyListBox ... converter="javax.faces.Integer">

或仅使用它Integer[],其类型信息在运行时清楚地知道:

private Integer[] SELEction;

解决方法

情况:我有一个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>

和托管bean:

import java.io.@R_696_9464@lizable;
import java.util.ArrayList;

@javax.faces.bean.ManagedBean
@javax.enterprise.context.SessionScoped
public class TESTBean implements @R_696_9464@lizable
{
    private ArrayList<Integer> SELEction;
    private ArrayList<Integer> list;

    public ArrayList<Integer> getList()
    {
        if(list == null || list.isEmpty())
        {
            list = new ArrayList<Integer>();
            list.add(1);
            list.add(2);
            list.add(3);
        }
        return list;
    }

    public void setList(ArrayList<Integer> list)
    {
        this.list = list;
    }

    public ArrayList<Integer> getSELEction()
    {
        return SELEction;
    }

    public void setSELEction(ArrayList<Integer> SELEction)
    {
        this.SELEction = SELEction;
    }

    public String go()
    {
            // This throws an exception: java.lang.ClassCastException: java.lang.String cAnnot be cast to java.lang.Integer
            /*for (Integer i : SELEction)
            {
                System.out.println(i);
            }*/
        return null;
    }
}

大佬总结

以上是大佬教程为你收集整理的如何在JSF中将List <Integer>值绑定到selectManyListbox全部内容,希望文章能够帮你解决如何在JSF中将List <Integer>值绑定到selectManyListbox所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。