gpt4 book ai didi

java - 如何在 JSF 数据表中获取选定的行索引?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:53:14 24 4
gpt4 key购买 nike

我在 index.xhtml 上有一个数据

<h:dataTable style="border: solid 2px black;"
value="#{IndexBean.bookList}" var="item"
binding="#{IndexBean.datatableBooks}">

<h:column>
<h:commandButton value="Edit" actionListener="#{IndexBean.editBook}">
<f:param name="index" value="#{IndexBean.datatableBooks.rowIndex}"/>
</h:commandButton>
</h:column>
</h:dataTable>

我的 bean :

@ManagedBean(name="IndexBean")
@ViewScoped
public class IndexBean implements Serializable {
private HtmlDataTable datatableBooks;

public HtmlDataTable getDatatableBooks() {
return datatableBooks;
}

public void setDatatableBooks(HtmlDataTable datatableBooks) {
this.datatableBooks = datatableBooks;
}

public void editBook() throws IOException{
int index = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("index").toString());
System.out.println(index);
}
}

我的问题是,即使我点击了不同的编辑按钮,我在服务器日志中总是得到相同的索引。假设有一个集合提供给数据表。我没有在 bean 中显示它。

如果我将范围从 ViewScope 更改为 RequestScope,它工作正常。 @ViewScoped 可能有什么问题?提前致谢:)

编辑:

<h:column>
<h:commandButton value="Edit" actionListener="#{IndexBean.editBook}" />
</h:column>

public void editBook(ActionEvent ev) throws IOException{
if (ev.getSource() != null && ev.getSource() instanceof HtmlDataTable) {
HtmlDataTable objHtmlDataTable = (HtmlDataTable) ev.getSource();
System.out.println(objHtmlDataTable.getRowIndex());
}
}

最佳答案

您已经绑定(bind)了 <h:dataTable> bean 的组件。您需要做的就是:

public void editBook() throws IOException{
int index = datatableBooks.getRowIndex(); // Actually not interesting info.
Book book = (Book) datatableBooks.getRowData(); // This is what you want.
}

<f:param>这里也不需要。有关更多提示,请参阅 this article .

更新:我可以重现您的问题。这可能是 @ViewScoped 的错误.当 bean 设置为 @RequestScoped ,它按预期工作。此外,当您删除组件绑定(bind)并自己从 viewroot 获取组件时,它会按预期工作。我已经提交了 issue 1658关于这个。

关于java - 如何在 JSF 数据表中获取选定的行索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779320/

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