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();
}
}
しかし、それでも同じ「値が無効です」というエラーが発生します。
もうどうしたらいいのかわからない。助けてください。
ありがとう、
ニコラス