【问题标题】:How to reset the value of an inputText to the original value on rowUnselectCheckbox如何将 inputText 的值重置为 rowUnselectCheckbox 上的原始值
【发布时间】:2016-04-23 15:44:45
【问题描述】:

我需要您的帮助来将 inputText 中的值重置为其原始值,一旦取消选中该行的复选框,就会在页面加载时检索该值。在这种情况下,我有一个数据表,一旦用户单击该行中的复选框,inputText 将被启用并可编辑。如果用户取消选中该复选框,我想撤消 inputText 中添加的文本。在当前情况下,如果用户取消选中该行,则添加的字符将保留在 inputText 中。

数据表的代码如下:

<p:dataTable value="#{testController.employeeList}" id="Employee" var="emp"
                             selection="#{testController.selectedEmployees}" rowKey="#{emp.id}" emptyMessage="No Employees found.">
                    <p:ajax event="rowSelectCheckbox" listener="#{testController.EnableInputText}" update="Employee"/>
                    <p:ajax event="rowUnselectCheckbox" listener="#{testController.onRowUnselect}" update="Employee"/>
                    <p:columnGroup type="header">
                        <p:row>
                            <p:column/>
                            <p:column headerText="ID"/>
                            <p:column headerText="Name"/>
                            <p:column headerText="Remarks"/>
                            <p:column headerText="Delete"/>
                        </p:row>
                    </p:columnGroup>
                    <p:column selectionMode="multiple" style="width:2%;text-align:center"/>
                    <p:column headerText="ID">
                        <h:outputText value="#{emp.id}"/>
                    </p:column>
                    <p:column headerText="Name">
                        <h:outputText value="#{emp.name}"/>
                    </p:column>
                    <p:column headerText="Remarks">
                        <h:inputText id="inputT1" value="#{emp.remarks}" disabled="#{emp.disable}"/>
                    </p:column>
                </p:dataTable> 

以及backing bean中的代码:

private List<Employee> employeeList;

private List<Employee> selectedEmployees;

public void EnableInputText(SelectEvent event) {
    for (int i = 0; i < selectedEmployees.size(); i++) {
        for (int j = 0; j < employeeList.size(); j++) {
            if (selectedEmployees.get(i).getId().equals(employeeList.get(j).getId())) {
                employeeList.get(j).setDisable(false);
            }
        }
    }
}

public void onRowUnselect(UnselectEvent unselectEvent) {
    Employee emp = (Employee)unselectEvent.getObject();

    for (Employee e : employeeList) {
        if (emp.getId().equals(e.getId())) {
            e.setDisable(true);
        }
    }
}

假设 inputText 中的值为 Test 并且用户勾选了该行中的复选框并将其编辑为 Test555,然后在取消选中该复选框时,inputText 值应该返回到 Test

【问题讨论】:

    标签: java jsf jsf-2 primefaces


    【解决方案1】:

    这看起来很容易。

    您只需要使用另一个变量oldRemarks。在员工列表初始化期间设置 oldRemarks=remarks。

    public Employee(Integer id,String name,String remarks,Boolean disabled){
            super();
            this.id = id;
            this.name = name;
            this.remarks = remarks;
            this.disabled = disabled;
            this.oldRemarks = remarks;
        }
    

    在你的 UnselectEvent 中

    public void onRowUnselect(UnselectEvent unselectEvent){
        Employee emp = (Employee)unselectEvent.getObject();
    
        for (Employee e : employeeList) {
            if (emp.getId().equals(e.getId())) {
                e.setDisabled(true);
                e.setRemarks(e.getOldRemarks());
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 2015-07-10
      • 2023-03-26
      • 2017-03-21
      相关资源
      最近更新 更多