Caa*_*gok 1 datatable jsf valuechangelistener jsf-2 selectbooleancheckbox
我有下面的表格:
<h:form>
<h:dataTable value="#{bean.items}" var="item">
<h:column>
<h:selectBooleanCheckbox value="#{item.enabled}" valueChangeListener="#{bean.onchangeEnabled}">
<f:ajax event="change" />
</h:selectBooleanCheckbox>
</h:column>
<h:column>#{item.name}</h:column>
</h:dataTable>
</h:form>
Run Code Online (Sandbox Code Playgroud)
我想获得#{item}或至少#{item.name}在值更改侦听器方法中:
public void onchangeEnabled(ValueChangeEvent e) {
// I would like to get #{item.name} here too.
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
首先,这valueChangeListener是工作的错误工具.使用<f:ajax listener>.其次,event="change"在复选框/单选按钮的情况下是错误的选择,因为它们的物理值实际上永远不会改变.您应该使用event="click",但这是默认设置,因此您可以省略它.
总而言之,正确的初始代码应如下所示:
<h:selectBooleanCheckbox value="#{item.enabled}">
<f:ajax listener="#{bean.onchangeEnabled}" />
</h:selectBooleanCheckbox>
Run Code Online (Sandbox Code Playgroud)
同
public void onchangeEnabled(AjaxBehaviorEvent event) { // Note: event argument is optional.
// ...
}
Run Code Online (Sandbox Code Playgroud)
一旦修复它,那么您可以轻松地使用EL 2.2功能来传递方法参数:
<h:selectBooleanCheckbox value="#{item.enabled}">
<f:ajax listener="#{bean.onchangeEnabled(item)}" />
</h:selectBooleanCheckbox>
Run Code Online (Sandbox Code Playgroud)
同
public void onchangeEnabled(Item item) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7338 次 |
| 最近记录: |