我有一个包含从列表中填充的数据表的页面。该列表有许多 id,我需要将它们传递给 bean 方法并执行数据库操作。我正在使用 commandButton 的 render 属性来调用 bean 方法 (findInfo())。我需要一次将列表中的 id (myBean.testList.id) 传递给这个 bean 方法,以便我得到布尔值。首先,我不确定如何传递 id(到我的 bean 中的 findInfo 方法),其次,如果我使用标签,我最终只发送一个 ID。谁能给我一个解决方案。我尝试使用以下代码进行操作。
我的豆子
@ManagedBean(name="myBean")
public class MyBean(){
public boolean findInfo(Integer indId){
boolean var = dataProvider.isIdPresent(indId); // database operation
if (var)
return true;
else
return false;
}
}
xhtml页面
<h:dataTable value="#{myBean.testList}" var="t" >
<h:column>
<f:facet name="header">
<h:outputText value="Actions" />
</f:facet>
<h:commandButton value = "Add"
action = "#{someBean.loadReport}"
rendered = "#{myBean.findInfo() == false}"/>
<h:commandButton value = "View"
action = "#{someBean.loadReport}"
rendered = "#{myBean.findInfo() == true}"/>
</h:column>
<h:column>
...
</h:column>
</h:dataTable>
更新: 我试图按照 BalusC 解释的答案(kolossus 发布),我最终在 f:param 中将 id 作为 null 传递。有什么建议么。我更新的代码:
<h:dataTable value="#{myBean.testList}" var="t" >
<h:column>
<f:facet name="header">
<h:outputText value="Actions" />
</f:facet>
<h:commandButton value = "Add"
action = "#{someBean.loadReport}"
rendered = "#{myBean.findInfo() == false}">
<f:param name="id" value="#{t.id}" />
</h:commandButton>
<h:commandButton value = "View"
action = "#{someBean.loadReport}"
rendered = "#{myBean.findInfo() == true}">
<f:param name="id" value="#{t.id}" />
</h:commandButton>
</h:column>
<h:column>
...
</h:column>
我更新的 Bean
@ManagedBean(name="myBean")
@RequestScoped
public class MyBean(){
@ManagedProperty("#{param.id}")
private Integer indId;
public boolean findInfo(){
boolean var = dataProvider.isIndIdPresent(indId);
if (var)
return true;
else
return false;
}
}
另外,我认为我不能使用 f:ViewParam,因为我正在同一个视图中从数据表中调用 bean。