从JSF中用逗号分隔的inputText字段中取多个值

时间:2011-12-12 18:02:09

标签: java jsf-2

我正在使用JSF Framework设计电子邮件客户端系统 。 UI应该能够在相同的inputText字段中获取多个收件人地址,每个字段用逗号(,)分隔。 我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分:3)

根据评论:

  

我可以将inputText字段的value属性分配给数组吗?

您可以为此实施Converter

@FacesConverter("commaSeparatedFieldConverter")
public class CommaSeparatedFieldConverter implements Converter {

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if (value == null) {
            return null;
        }

        String[] strings = (String[]) value;
        StringBuilder builder = new StringBuilder();

        for (String string : strings) {
            if (builder.length() > 0) {
                builder.append(",");
            }

            builder.append(string);
        }

        return builder.toString();
    }

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value == null) {
            return null;
        }

        return value.split(",");
    }

}

按如下方式使用:

<h:inputText value="#{bean.addresses}" converter="commaSeparatedFieldConverter" />

private String[] addresses;