Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF-UIS问题_Java_Jsf_Uicomponents - Fatal编程技术网

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;
    }
}