我在 JBoss AS 5 上使用 seam 2.2.2.Final。我正在开发一个多页向导。在我的第一页上,用户将能够在 textarea 上输入几个用新行分隔的公司名称。
<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
我尝试将 itemValue 放在 s:selectItems 上,但出现另一个错误,即“值无效”
尝试使用<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();
}
}
但我仍然收到相同的“值无效”错误。
我不知道该怎么办了。请帮忙。
谢谢,
尼古拉斯