jsf - 在 SelectOneMenu 中添加一些操作
问题描述
我需要 selectItems 中的变量在 selectOneMenu 中可用,或者我可以通过其他方式获取用户选择的内容。
我需要这个,因为这个项目需要通过 Hibernate.initialize(item)
所以我需要调用我构建的视图(bean)方法来完成它。
<h:selectOneMenu
id="dependenteSalvar"
value="#{pessoaView.registro}"
styleClass="form-control"
converter="indexConverter">
<f:selectItem itemValue="#{null}" itemLabel="Selecione..."></f:selectItem>
<t:selectItems
value="#{pessoaView.pessoasAtivas}"
var="dependente"
itemLabel="#{dependente.nome} (#{dependente.documento})"
itemValue="#{dependente}">
</t:selectItems>
</h:selectOneMenu >
可能吗?
解决方案
您可以使用 <f:ajax> 标签在后端监听 selectOneMenu 的事件。
<h:selectOneMenu
id="dependenteSalvar"
value="#{pessoaView.registro}"
styleClass="form-control"
converter="indexConverter">
<f:selectItem itemValue="#{null}" itemLabel="Selecione..."></f:selectItem>
<t:selectItems
value="#{pessoaView.pessoasAtivas}"
var="dependente"
itemLabel="#{dependente.nome} (#{dependente.documento})"
itemValue="#{dependente}">
</t:selectItems>
<f:ajax listener="#{bean.listener}" />
</h:selectOneMenu >
考虑到 <f:ajax> 需要 jsf.js 文件包含在 HTML <h:head> 中。基本上,该文件包含执行魔术的 Javascript 函数。
如果您使用 primefaces,另一种选择是使用 <p:ajax event="change" listener... /> 而不是 f:ajax 来监听值更改事件,如下所示:
<p:selectOneMenu
id="dependenteSalvar"
value="#{pessoaView.registro}"
styleClass="form-control">
<f:selectItem itemValue="#{null}" itemLabel="Selecione..."></f:selectItem>
<f:selectItems
value="#{pessoaView.pessoasAtivas}"
var="dependente"
itemLabel="#{dependente.nome} (#{dependente.documento})"
itemValue="#{dependente}">
</f:selectItems>
<p:ajax listener="#{bean.listener}" event="change" />
</p:selectOneMenu >
推荐阅读
- reactjs - 在 React 中连续上下移动图像
- python - 确定投资组合波动率的函数 - Python 函数语法
- node.js - 如何检查用户是否已登录?
- r - 如何用R中的组合特殊字符替换字符串
- javascript - 如何在此 google 脚本/文件上传表单中添加进度条
- python - 此行和第五行之间的 Python 数据框差异
- azure - 无法生成 Azure SAS 连接字符串。怀疑这是“由于未发布端点,某些路由选项被禁用。”
- roku - How to post xml with roUrlTransfer in a Roku App?
- python - 向现有数据框添加一列重复数字
- javascript - 根据与不同数组中对象的属性匹配的值,为数组中的每个对象添加属性