当前位置: 首页 > 知识库问答 >
问题:

选择字符串列表中的项目?

厍胤运
2023-03-14

我正在使用接缝2.2.2。JBoss AS 5上的最终版本。我正在开发一个多页向导。在我的第一页上,用户将能够在文本区域上输入由新行分隔的多个业务名称。

<s:decorate id="businessNameTextAreaField" template="layout/edit.xhtml">

                    <ui:define name="label">Business Names</ui:define>

                    <h:inputTextarea id="businessNameTextArea"

                                   cols="80"

                                   rows="3"

                               required="true"

                                  value="#{businessNameHome.instance.businessNameTextArea}"/>

            </s:decorate>

提交页面后,系统解析输入值并将其拆分为字符串列表

      public String checkBusinessNames(){

            String businessNameTextArea = this.getInstance().getbusinessNameTextArea();

            String[] businessNameTextAreaArray = businessNameTextArea.split("\\n");



            List<SelectItem> businessNameChoices = new ArrayList<SelectItem>();



            for(String businessNameText: businessNameTextAreaArray){           

                businessNameChoices.add(new SelectItem(businessNameText));

            }



            this.getInstance().setBusinessNameChoices(businessNameChoices);

            return "valid";

      }

然后要求用户从有效企业名称列表中选择进行注册

<s:decorate id="businessNameRegisterListField" template="layout/edit.xhtml">

 <ui:define name="label">Business Name</ui:define>

 <h:selectManyCheckbox  value="#{businessNameHome.instance.selectedbusinessName}" layout="pageDirection" immediate="true" >

 <s:selectItems value="#{businessNameHome.instance.businessNameChoices}" var="bn" label="#{bn.label}" />                                                                                      </h:selectManyCheckbox>                            

  </s:decorate>

selectedbusinessName为String类型,而businessNameChoices为List类型

在提交页面时,作为企业名称提交的内容如下:

javax.faces.model.SelectItem@135aa7c

我曾尝试在s:selectItems上设置itemValue,但我遇到另一个错误,即“Value is not valid”

尝试使用

我还尝试创建自己的转换器

公共类BusinessNameBeanConverter实现javax.faces.convert.转换器{

        @Override

        public Object getAsObject(FacesContext context, UIComponent cmp, String value)      {

            // TODO Auto-generated method stub

            System.out.println("getAsObject "+value);

            return value;

        }



        @Override

        public String getAsString(FacesContext context, UIComponent cmp, Object value) {

            // TODO Auto-generated method stub

            System.out.println("getAsString "+((SelectItem)value).getValue());

            return ((SelectItem)value).getValue();

        }



    }

但我仍然得到相同的“值无效”错误。

我不知道该怎么办了。请帮忙。

谢谢

尼古拉斯


共有1个答案

鲜于玮
2023-03-14

改变

<s:selectItems value="#{businessNameHome.instance.businessNameChoices}" var="bn" label="#{bn.label}" />

<f:selectItems value="#{businessNameHome.instance.businessNameChoices}" />

您已经有了一个列表

不要忘记移除转换器,这没有意义。

 类似资料:
  • 这是我得到的一个列表的(部分)dput()输出。 它要么包含字符向量,要么包含字符(0)…我只想选择写为字符(0)的元素,但我不知道如何选择。有人能帮我吗?

  • 问题内容: 我有一个可变长度的列表,正在尝试寻找一种方法来测试当前正在评估的列表项是否是列表中包含的最长字符串。我正在使用Python 2.6.1 例如: 当然,有一个简单的列表理解功能很简短,但我却忽略了它? 问题答案: 从Python文档本身,您可以使用:

  • 问题内容: 我有一个看起来像这样的Pandas DataFrame: 而且我想提取仅包含那些行的DataFrame,其中包含的任何行。因此结果应如下所示: 最简单的方法是什么? 供测试用: 问题答案: IIUC重新创建您的df,然后使用with应该比

  • 问题内容: 是否可以将长选项包装在选择列表中? 我有一个动态选择列表,其中一些选项很长。我想要的选项太长而无法包装到下一行。除此之外,我还要缩进这些行。 如果不可能的话,我的解决方案是将结果修剪为字符。 这是我所拥有的: 这就是我想要的: 问题答案: 您无法使用标准来做到这一点,您需要自己动手或找到菜单插件

  • 我想根据我的输入选择列(列表 我知道要选择不同的特定列,我可以使用@Query("SELECT DISTINCT name OF TABLE"),但是,我想给用户选择他们想要的列的灵活性。列表

  • 问题内容: 如果我有一个字符串列表,例如: 为了摆脱每个字符串中的所有s,我该怎么办?我尝试在for循环中使用或,但是它无法像正常字符串(不在列表中)那样工作。有人有建议吗? 问题答案: 尝试这个: