我的目标是那个
查看建议列表(在我的控制器中按对象列表绑定)
使用rich:autocomplete
组件
建议列表项目(对象)被视为userFirstName
,userSecondName
从列表中选择一个项目时
建议框的The label
必须为 userFirstName
但
此选定项目的The value
将传递给控制器,需要 userId
我的问题是 当我使用这个片段
时<rich:autocomplete
autocompleteList="#{myController.myList}"
var="var"
fetchValue="#{var.userFirstName}"
value="#{myController.id}"
autofill="true"
layout="table" >
<rich:column>
#{var.userFirstName}
</rich:column>
<rich:column>
#{var.userSecondName}
</rich:column>
</rich:autocomplete>
我的控制器传递的值是 userFirstName 而非 userId
问题是fetchValue property
的值是两者(the label
和the value
)
那么我如何推迟所选项目的the label
和the value
呢?
然后我将能够在建议框中查看某些内容并将其他内容传递给我的控制器
答案 0 :(得分:3)
这实际上是不可能的,我很害怕。
有关示例,请参阅this post。要点是,由于<rich:autocomplete>
基于HTML的普通<input type=text>
,因此您只能向JSF提交在文本框中输入的内容(您使用fetchValue
定义的值)。 RF-3.3自动完成中出现的隐藏状态消失了。
人们,包括我自己,一直在制定自定义解决方案,包括挂钩rich:autocomplete#onselectitem客户端事件并将id写入<h:inputHidden />
字段或集成客户端建议替代方案,如{{3 }}
我听说RF人员正在改进RF-5中的搜索,现在正在形成。