1

JBoss AS5でseam2.2.2.Finalを使用しています。複数ページのウィザードで作業しています。最初のページで、ユーザーはテキストエリアに新しい行で区切られたいくつかの会社名を入力できます。

<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を配置しようとしましたが、「値が無効です」という別のエラーが発生します。

使用しようとしまし<s:convertEntity>たが、NumberFormatExceptionが発生します

私も自分のコンバーターを作成しようとしました

パブリッククラスBusinessNameBeanConverterはjavax.faces.convert.Converter{を実装します

        @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();

        }



    }

しかし、それでも同じ「値が無効です」というエラーが発生します。

もうどうしたらいいのかわからない。助けてください。

ありがとう、

ニコラス

4

1 に答える 1

3

変化する

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

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

つまり、あなたはすでに、有用なものではList<SelectItem>なく、List<SomeObject>を持っています。<s:selectItems>

コンバーターを取り外すことを忘れないでください、それは意味がありません。

于 2012-04-23T21:20:21.553 に答える