当前位置: 首页 > 知识库问答 >
问题:

Primefaces dataTable中的InputText未刷新

穆城
2023-03-14
<h:body>
    <h:form id="form">

        <p:dataTable var="v" value="#{test.list}" id="testTable">
            <p:column headerText="Test value">
                <p:inputText value="#{v}"/>
            </p:column>
        </p:dataTable>

        <h:dataTable var="v" value="#{test.list}" id="testTable1">
            <h:column>
            <f:facet name="header">
                <h:outputText value="Test value" />
            </f:facet>
                <p:inputText value="#{v}" />
            </h:column>
        </h:dataTable>

        <p:dataTable var="v" value="#{test.list}" id="testTable2">
            <p:column headerText="Test value">
                <h:outputText value="#{v}" />
            </p:column>
        </p:dataTable>

        <p:commandButton value="Clear" actionListener="#{test.clear()}" immediate="true" update=":form:testTable :form:testTable1 :form:testTable2"/>
        <p:commandButton value="Update" actionListener="#{test.update()}" update=":form:testTable :form:testTable1 :form:testTable2"/>
    </h:form>
</h:body>
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

@Named
@ViewScoped
public class Test implements Serializable {

    private static final long serialVersionUID = 1L;

    private List<String>            list;



    @PostConstruct
    private void init(){
        update();
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public void clear() {
        list = new ArrayList<String>();
    }

    public void update() {
        list = new ArrayList<String>();
        list.add("Item 1");
        list.add("Item 2");     
    }
}

在上面的例子中,我有3个配置:1。具有p:InputText 2的p:DataTable。h:带有p:InputText 3的DataTable。P:DataTable(带有H:OutputText)

和2个按钮:第一个清除数据,第二个应用数据

工作流:

加载新数据--单击“更新”按钮(假设您正在打开带有新数据的新表单)

问题:为什么带有p:inputtext的p:dataTable仍然存储手动更改的数据,而不是加载的数据?在这种情况下,有什么方法可以强制p:dataTable像h:dataTable那样工作吗?

共有1个答案

班展
2023-03-14

解决方案是:primefaces resetInput

在我的例子中是:

 <p:commandButton value="Clear" actionListener="#{test.clear()}" immediate="true"
          update=":form:testTable :form:testTable1 :form:testTable2"> 
    <p:resetInput target=":form:testTable" />
 </p:commandButton>


编辑:在某些情况下-如果上述操作不起作用-请尝试primefaces扩展中的操作:

<pe:resetInput for=":form:testTable" />
 类似资料:
  • 自定义UITextField,根据第一响应者动态变化输入框的指示名字。输入框标题可以自动往上缩,也可以清理所输入的内容。支持暗码功能。

  • inputText字段的代码如下所示; 到目前为止,我已经试着对包含面板进行了定时的部分刷新,我已经将typeahead模式从无设置为满。没什么区别。 除了每10分钟刷新一次页面之外,还有什么是夫妇造成的问题。仅供参考的是,实际的typeahead是正确工作一致的,它只是onchange事件停止发射。

  • 我试图通过datatable显示bean中包含的列表中的数据,并在用户键入时由代码执行操作。它最初显示ok,对列表的更改将反映在UI中。 我的问题是,输入到inputText中的值被忽略。尝试寻找解决方案,我尝试在值更改时检查列表,还尝试在没有ajax的情况下进行检查,以防出现问题(没有更改)。我尝试过使用会话和视图范围bean,但运气不佳。试着用POJO包线。 这里疯了。感觉我错过了一些明显的东

  • 首先,我在这方面工作了一整天,但什么也做不到。我有一个,其适配器使用的。我尝试使用回调类实现: 下面是TouchHelper的初始化 我的适配器实现接口 链接 适配器类查看器类

  • JSF-2.0、Mojarra 2.1.19、PrimeFaces 3.4.1 问题摘要:在内部有一个和激发的inputText操作,该操作使用将dataTable行索引作为参数传递。但它总是传递dataTable的最后一行,而不是包含当前单击的的行的索引。 从我前面的问题中可以看出,我正在尝试使用作为一个状态的注释接受者,比如在Facebook等中。实现包括一个。它的行代表每种状态。好像是: 上

  • 问题内容: 当我对CSS文件进行任何更改时,这些更改不会反映在浏览器中。我怎样才能解决这个问题? 问题答案: 对于 周 ?尝试打开样式表本身(通过在浏览器的地址栏中输入其地址),然后按。如果仍然无法刷新,则问题出在其他地方。 如果更新样式表并希望确保它在每个访问者的缓存中都得到刷新,那么一种非常流行的方法是将版本号添加为GET参数。这样,样式表会在必要时进行刷新,但刷新的频率不会超过此频率。