传递参数来自f:selectItems in h:selectOneListbox

时间:2012-09-07 17:11:15

标签: jsf jsf-2 facelets

我有一个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>

1 个答案:

答案 0 :(得分:1)

<f:param>有不同的用途。即使<f:param>可能,它仍然会在生成的HTML输出中显示。最终用户只需右键单击查看源,然后查看被定义为选项值的ID。

最好的办法是根据不同的唯一标识符从数据库中检索ID,也许是名字+姓氏的唯一组合。

这对我来说没有任何意义,为什么你想隐藏输出中的ID。如果你使用它作为选项值会更容易,如果你使用转换器更加容易,那么你可以将整个#{c}作为选项值传递。最终用户不能以任何方式欺骗/更改它。 JSF将根据可用选项列表重新验证提交的值(无论如何都在服务器端定义)。