我有一个selectOneListbox,当点击它时,应该将另一个参数(id)传递给服务器。就像现在一样,用户看到一个名单列表,当他们选择一个名字时,我可以得到名字。但是,每个名称还有一个与之关联的唯一ID,我不希望用户看到 - 如何在没有用户看到的情况下将所选名称的唯一ID传递给辅助bean?可能吗?我试图找出如何使用f:param,但我不知道这将如何起作用。
<h:selectOneListbox id="listBox" value="#{ScheduleMB.clients}" size="5"
rendered="#{ScheduleMB.showClients}" >
<f:selectItems value="#{ScheduleMB.clientList}" var="c"
itemLabel="#{c.lastName} #{', '} #{c.firstName}" itemValue="#{c.lastName}" />
<f:ajax event="click" listener="#{ScheduleMB.clickListener}"
render="group" />
</h:selectOneListbox>
答案 0 :(得分:1)
<f:param>
有不同的用途。即使<f:param>
可能,它仍然会在生成的HTML输出中显示。最终用户只需右键单击查看源,然后查看被定义为选项值的ID。
最好的办法是根据不同的唯一标识符从数据库中检索ID,也许是名字+姓氏的唯一组合。
这对我来说没有任何意义,为什么你想隐藏输出中的ID。如果你使用它作为选项值会更容易,如果你使用转换器更加容易,那么你可以将整个#{c}
作为选项值传递。最终用户不能以任何方式欺骗/更改它。 JSF将根据可用选项列表重新验证提交的值(无论如何都在服务器端定义)。