我正在使用primtefaces 3.5及以下代码来弹出p:selectOneMenu。在选择项目时,我想知道所选itemValue的值,即userStar.userStarId。 尝试过使用f:setPropertyActionListener或f:attribute或者在侦听器方法中传递值,但没有运气。
感谢您的时间和帮助。
<p:selectOneMenu editable="true" style="width:300px" value="#{starBean.newStarName}">
<f:selectItems value="#{starBean.userStarList}" var="userStar" itemLabel="#{userStar.starName}" itemValue="#{userStar.userStarId}" />
<p:ajax event="change" listener="#{starBean.changeValueListener}" process="@this" partialSubmit="true">
</p:ajax>
</p:selectOneMenu>
答案 0 :(得分:0)
更改此
<p:selectOneMenu editable="true" style="width:300px" value="#{starBean.newStarName}">
到
<p:selectOneMenu editable="true" style="width:300px" value="#{starBean.userStarId}">
p:selectOneMenu
值是此处的选定值。
答案 1 :(得分:0)
如果您想避免使用自定义转换器,可以将所有pojo放入Map中并将其加载到p:selectOneMenu
,然后使用Map.get(K)
获取所选的pojo。
初始化:
Map<String,UserStar> userStarMap = new LinkedHashMap<String,UserStar>();
UserStar user1 = new UserStar(...);
userStrMap.put(user1.userStarId, user1);
...
...
...
Facelt:
<p:selectOneMenu editable="true" style="width:300px" value="#{starBean.newStarName}">
<f:selectItems value="#{starBean.userStarMap.values()}"
var="userStar" itemLabel="#{userStar.starName}" itemValue="#{userStar.userStarId}" />
<p:ajax event="change" listener="#{starBean.changeValueListener}" process="@this" partialSubmit="true">
</p:ajax>
</p:selectOneMenu>
监听器:
public void changeValueListener(){
UserStar selectedUser = userStarMap.get(newStarName);
}