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

标签 java jsf jsf-2 glassfish

我在使用 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/

相关文章:

java - 在java中为组合框分配键

jsf - 客户端可以更改bean操作方法中EL方法参数的值吗?

java - BouncyCasSTLe 编码差异

java - 一个线程大部分时间都在运行

css - JSF <f :facet> contents not rendered

jquery - JSF - 具有 "time"值的范围 slider

jsf - JSF的h :outputScript/h:outputStylesheet have over plain HTML script/style elements有什么优势

java - 重新部署项目上传图片文件夹被删除

jsf-2 - ui 内的复选框 :repeat not refreshed by Ajax

java - 如何通过Thread访问Runnable对象?