java - SelectItem.value 仅以字符串形式返回对象引用

标签 java jsf primefaces selectonemenu

目标是正确获取 SelectItem.value 并将其设置在我的支持 bean 中。问题是 itemValue 似乎只返回对象引用。我只是引用了这个https://www.primefaces.org/showcase/ui/input/oneMenu.xhtml

如何实际获取所选项目的对象(即 itemValue)?

尝试将 setter 作为我的 itemValue 的确切对象,但最终将 null 设置为值

尝试将 setter 作为一般对象,结果将值设置为 String 的对象引用

<p:selectOneMenu id="car" value="#{selectOneMenuView.car}">
            <f:selectItem itemLabel="Select One" itemValue="" />
            <f:selectItems value="#{selectOneMenuView.cars}" />
 </p:selectOneMenu>

支持bean


Car car = new Car(brand, model);
SelectItemGroup g1 = new SelectItemGroup("German Cars");
        g1.setSelectItems(new SelectItem[] {new SelectItem(car, "BMW")});

Car car1 = new Car(brand1, model1);
SelectItemGroup g2 = new SelectItemGroup("American Cars");
        g2.setSelectItems(new SelectItem[] {new SelectItem(car1, "Chrysler")});

        cars = new ArrayList<SelectItem>();
        cars.add(g1);
        cars.add(g2);

当选择一个项目时,setCar 被调用,但它似乎没有传递我想要的值。

//value is null
public void setCar(Car car) {this.car = car;}
//value is the object reference
public void setCar(Object car) {this.car = car;}

我尝试显式放置 var 和 itemValue 属性,但结果仍然相同。

我似乎找不到这方面的好的文档。我的目标可能实现吗?我需要一些帮助。谢谢!

最佳答案

这里你有一个汽车构造函数,它接受品牌和型号两个参数,但在你的 setter 中你只需要一个汽车对象。 我认为你应该有这样的代码:

public void setCar(brand b,model m){
     this.brand=b;
     this.model=m;
}

祝你好运!

关于java - SelectItem.value 仅以字符串形式返回对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56123961/

相关文章:

java - 将此用作 addfocuslistener 方法的参数

java - Spring Cloud Config 无法使用 ssh key 克隆私有(private) bitbucket 存储库

java - RestEasy路径求解

jsf - p :messages displays but disapear almost instantly

jsf - 当使用惰性数据表时,另一个组件无法更新/第二个组件数据落后于一个请求

java - 保持传入 BigDecimal 的 String 的值完全相同

java - 将 EL 解析器与 WELD 结合使用时,如何解决类型差异?

jsf - Primefaces Dynaform 奇怪的行为与 f :validateLength

html - Primefaces p :calendar inside overlaypanel

jsf - 将不可序列化的应用程序范围 bean 作为集群中可序列化 session 范围 bean 的托管属性注入(inject)