Java JSF-UIS问题
我收到来自编译器的奇怪错误:Java JSF-UIS问题,java,jsf,uicomponents,Java,Jsf,Uicomponents,我收到来自编译器的奇怪错误: Expected a child component type of UISelectItem/UISelectItems for component type javax.faces.SelectOne(siachoice). Found javax.faces.component.UISelectItems. 那么,如果他期望UISelectItems,并找到了UISelectItems,那么错误在哪里 我的JSP实现: <h:selectOneMen
Expected a child component type of UISelectItem/UISelectItems for component type javax.faces.SelectOne(siachoice). Found javax.faces.component.UISelectItems.
那么,如果他期望UISelectItems,并找到了UISelectItems,那么错误在哪里
我的JSP实现:
<h:selectOneMenu id="siachoice" value="#{dbSelectBean.currentOption}">
<f:selectItems value="#{dbSelectBean.dbs}" />
</h:selectOneMenu>
方法,其中我将UISelectItem设置为UISelectItems:
private UISelectItems populateDatabases(String databaseString) {
UISelectItems selects = new UISelectItems();
List<UISelectItem> result = new ArrayList<UISelectItem>();
StringTokenizer tokeniz = new StringTokenizer(databaseString, GlobalConstants.DELIMITER);
while(tokeniz.hasMoreTokens()){
String tempDB = tokeniz.nextToken();
UISelectItem item = new UISelectItem();
item.setItemValue(tempDB);
item.setItemLabel(tempDB);
result.add(item);
}
selects.setValue(result);
return selects;
}
private UISelectItems填充数据库(字符串数据库字符串){
UISelectItems selects=新建UISelectItems();
列表结果=新建ArrayList();
StringTokenizer tokeniz=新的StringTokenizer(数据库字符串,GlobalConstants.DELIMITER);
while(tokeniz.hasMoreTokens()){
字符串tempDB=tokeniz.nextToken();
UISelectItem=新UISelectItem();
item.setItemValue(tempDB);
item.setItemLabel(tempDB);
结果.添加(项目);
}
选择.setValue(结果);
返回选择;
}
然后,当然,我将它设置为bean变量dbs
帮助?问题是UISelectItem是一个组件clas,因此它必须通过
绑定
属性与jsf标记配对。如果您想要纯值,您必须使用类。您必须返回一个集合的javax.faces.model.SelectItem
列表=新的ArrayList();
添加(新选择项(值、标签))
退货清单 该
需要以下值之一:
public SelectItem[] getItems() {}
public List<SelectItem> getItems() {}
public Map<String, Object> getItems() {}
它们被绑定为
private UISelectItem selectItem;
private UISelectItems selectItems;
// +getter +setter
通过这种方式,您可以通过编程方式控制组件-就像其他所有UIComponent
<h:form>
<h:selectOneListbox size="5" >
<f:selectItems value="#{userManager.Test()}" />
</h:selectOneListbox>
</h:form>
import javax.faces.model.SelectItem;
导入tn.com.ttnproject.entity.*;
@名称(“用户管理器”)
@作用域(ScopeType.CONVERSATION)
公共类用户管理器{
公开名单;
选择项目元素;
公共列表测试(){
listalUsersNames=新的ArrayList();
对于(int i=1;i),SelectItem和UISelectItem之间的区别是什么?SelectItem表示值。UISelectItem表示组件。
private UISelectItem selectItem;
private UISelectItems selectItems;
// +getter +setter
<h:form>
<h:selectOneListbox size="5" >
<f:selectItems value="#{userManager.Test()}" />
</h:selectOneListbox>
</h:form>
import javax.faces.model.SelectItem;
import tn.com.ttnproject.entity.*;
@Name("userManager")
@Scope(ScopeType.CONVERSATION)
public class UserManager {
public List <SelectItem> listAllUsersNames;
SelectItem element;
public List<SelectItem> Test(){
listAllUsersNames = new ArrayList<SelectItem>();
for (int i=1;i<=10;i++)
{
element=new SelectItem(
new Integer(i),
i+".00 euros",
"Produit à "+i+".00 euros");
listAllUsersNames.add(element);
}
return listAllUsersNames;
}
}