gpt4 book ai didi

java - jsf - 数据表中用于删除行的命令链接

转载 作者:行者123 更新时间:2023-12-02 00:12:08 25 4
gpt4 key购买 nike

我想将 h:commandLink 放入 h:dataTable 中以删除单行。这里我有一个不起作用的代码,我希望你能帮助我。这段代码甚至没有调用我的删除方法。h:dataTable 的数据来自数据库。

XHTML

        <h:form>
<div class="center">
<h:dataTable id="list" value="#{firstBackingBean.list}"
var="first" styleClass="center">

<!-- other columns (take data from firstBackingBean) -->

<h:column>
<f:facet name="header" />
<h:commandLink value="delete" action="#{secondBackingBean.delete}" >
<f:ajax execute="@form" render="list" />
<f:param name="id" value="#{first.id}"/>
</h:commandLink>
</h:column>
</h:dataTable>
</div>
</h:form>

FirstBackingBean

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class FirstBackingBean {
public void delete() {
System.out.println("\nBUTTON CLICKED\n");
}
}

第二个BackingBean

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class SecondBackingBean {
// ...
}

最佳答案

UIData 组件内的 UICommand 组件不调用其操作时,通常意味着 value 属性背后的模型在显示带有表格的表单的请求和随后提交表单的请求之间,UIData 组件的属性发生了不兼容的更改。

如果支持 bean 是请求范围的,并且模型是基于请求范围的变量(例如请求参数)进行预初始化的,而该变量在表单提交请求期间不再存在,则可能会发生这种情况。

将 bean 放置在 View 范围内应该可以修复它。

另请参阅:

关于java - jsf - 数据表中用于删除行的命令链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com