gpt4 book ai didi

java - Ajax 渲染属性在 h :dataTable in JSF2 中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:09 26 4
gpt4 key购买 nike

我在使用 JSF 2.0 中的简单应用程序时遇到了一些问题。

我尝试构建一个支持 ajax 的待办事项列表。我有一些使用数据表显示的待办事项字符串。在这个数据表中,我有一个 commandLink 来删除任务。现在的问题是数据表不会重新呈现。

    <h:dataTable id="todoList" value="#{todoController.todos}" var="todo">
<h:column>
<h:commandLink value="X" action="#{todoController.removeTodo(todo)}">
<f:ajax execute="@this" render="todoList" />
</h:commandLink>
</h:column>
<h:column>
<h:outputText value="#{todo}"/>
</h:column>
</h:dataTable>

感谢您的帮助。

编辑(TodoController):

@ManagedBean
@SessionScoped
public class TodoController {

private String todoStr;
private ArrayList<String> todos;

public TodoController() {
todoStr="";
todos = new ArrayList<String>();
}

public void addTodo() {
todos.add(todoStr);
}

public void removeTodo(String deleteTodo) {
todos.remove(deleteTodo);
}

/* getter / setter */
}

最佳答案

(看来我没有足够的声誉来评论别人的答案)

我认为 FRothowe 建议用另一个元素包装表格,并使用来自 标记的绝对引用(即从文档的根命名所有父容器)来引用它。

像这样:

<h:form id="form">
<h:panelGroup id ="wrapper">
<h:dataTable value="#{backingBean.data}" var="list">
<h:column>
<h:commandButton value="-" action="#{backingBean.data}">
<f:ajax render=":form:wrapper"/>
</h:commandButton>
</h:column>
</h:dataTable>
</h:panelGroup>
</h:form>

但是,使用绝对引用始终是问题的根源,并且随着 View 的增长,重构时间呈指数级增长。

有没有办法只从 标签渲染表格(防止 jsf 在 ajax 事件中添加那些烦人的“:number_of_row”)?

关于java - Ajax 渲染属性在 h :dataTable in JSF2 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2424757/

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