0

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

1 回答 1

1

<f:param>用于不同的目的。即使这<f:param>是可能的,它最终仍然会在生成的 HTML 输出中可见。最终用户只需右键单击并查看源代码,然后将 ID 定义为选项值。

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

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

于 2012-09-07T19:10:23.037 回答