gpt4 book ai didi

JSF Primefaces SelectOneMenu

转载 作者:行者123 更新时间:2023-12-02 04:44:16 29 4
gpt4 key购买 nike

Person can only have only one car ,但在数据表中我想显示列表中的所有汽车,但选择一个用户所属的用户。这样用户就可以即时更新任何人的汽车。

假设我有两个

人物

id 
name
car_id

汽车

id
name

理想情况下,person 应该将 Cars id 作为 primary 键,但事实并非如此。所以每个人都有车,对吧。

现在我在数据表中显示 person 的列表,例如

------------------------------------
Name | Car
----------------------------------------
ABC | 1
DDD | 2

但我想显示如下:

------------------------------------
Name | Car
----------------------------------------
ABC | Toyota
DDD | Ford

现有代码:

<p:dataTable value="#{test.persons} var="person">
<p:column headerText="Name">
#{person.name}
</p:column>
<p:column headerText="Name">
#{person.carID}
</p:column>
</p:dataTable>

但是我想做这样的事情:

<p:dataTable value="#{test.persons} var="person">
<p:column headerText="Name">
#{person.name}
</p:column>
<p:column headerText="Car">
<p:selectOneMenu value="#{test.selectedCar}"
converter="entityConverter">
<f:selectItems value="#{spMBean.cars}" var="car"
itemLabel="#{car.name}" itemValue="#{car}" />
</p:selectOneMenu>
</p:column>
</p:dataTable>

如果有人能帮我解决这个问题,我将不胜感激。

最佳答案

您想将选定的汽车与个人相关联。

但是,您将下拉列表值绑定(bind)到通用支持 bean 属性,而不是绑定(bind)到个人。同一数据表中所有行中的所有下拉列表现在都指向一个相同的支持 bean 属性。提交后,每一行的选定值将相互覆盖,直到支持 bean 属性以最后一行的选定值结束。

这没有意义。您需要将下拉值绑定(bind)到个人。

<p:selectOneMenu value="#{person.car}">

如果 Person 实体具有 private Car car 属性而不是 private Long carID,这将是最简单的。您当然可以将可用项保存在单独的 bean 中。

关于JSF Primefaces SelectOneMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20146896/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com