Java 当从同一行的列中单击按钮时,JSF在Datatable的行中显示文本字段,

Java 当从同一行的列中单击按钮时,JSF在Datatable的行中显示文本字段,,java,jsp,jsf,Java,Jsp,Jsf,各位 这是我与JSF合作的第二天,如果我的问题不是很清楚,请耐心等待 我会尽量说清楚的 从附加的屏幕中,您可以看到带有 第一行为空,第二行有表项 我想做的是,我想使用表的第一行作为条目 在这里,我可以输入ID、名称和值的值 只要我点击“保存”按钮,该行就会被添加到数据库中并保存下来 应获取并显示。我对数据库部分没有任何问题 我的问题是:(请在提供解决方案时提供代码片段) 1) 单击后,我需要显示(ID、名称和值)的文本字段 “编辑”按钮用于具有值的行,单击“编辑”按钮后 按钮我需要启用“保存”按

各位

这是我与JSF合作的第二天,如果我的问题不是很清楚,请耐心等待 我会尽量说清楚的

从附加的屏幕中,您可以看到带有 第一行为空,第二行有表项

我想做的是,我想使用表的第一行作为条目 在这里,我可以输入ID、名称和值的值

只要我点击“保存”按钮,该行就会被添加到数据库中并保存下来 应获取并显示。我对数据库部分没有任何问题

我的问题是:(请在提供解决方案时提供代码片段)

1) 单击后,我需要显示(ID、名称和值)的文本字段 “编辑”按钮用于具有值的行,单击“编辑”按钮后 按钮我需要启用“保存”按钮,当 表已加载,所以我可以进行修改,现在它看起来像一个标签

当我点击 保存按钮我需要禁用它

我希望这一行和桌子的第一行一样 但在它里面有值可以编辑它。 如何做到这一点

2) 是否可以参考按钮的id并检查其是否正确 是否启用或禁用呈现文本字段(ID、名称和值)

这是表的列代码

<h:column>
    <f:facet name="header">
        <h:outputText value="Value" />
    </f:facet>
    <h:outputText value="#{dataItem.value}" />
    <h:inputText id="value" value="#{dataItem.value}" rendered="#{dataItem.value == null}"/>
</h:column>

当我有特定行的数据时,我不会渲染, 这样做是为了一次显示outputText或inputText


发布此类案例的代码可能需要很多时间。我们使用了许多类似的屏幕,所以这里有一些关于psuedocode的提示

BackingBean {
    // take a current variable to keep selected row
    DataItem current;
    // list of dataitems to show in grid 
    List<DataItem> listOfItems;

    // Use ActionListener to set current
    editActionListener(ActionEvent e){
        current = read via actionevent.getAttribute()
    }
    // Use save to save the data, reload the table, disable the button
    saveAction(){
        ManagerBean.save(current);
        reload listOfItems;
        current = null;
        disable save;
    }
}
BackingBean{
//获取当前变量以保留选定行
数据项当前;
//要在网格中显示的数据项列表
项目清单;
//使用ActionListener设置当前
editActionListener(ActionEvent e){
当前=通过actionevent.getAttribute()读取
}
//使用“保存”保存数据、重新加载表格、禁用按钮
saveAction(){
ManagerBean.save(当前);
重新加载项目列表;
电流=零;
禁用保存;
}
}
现在,在xhtml中显示来自当前的值:

<table component>
<row>
    <h:inputText value="#{backingBean.current.id}" />
    <h:inputText value="#{backingBean.current.name}" />
    <h:inputText value="#{backingBean.current.value}" />
</row>
<loop across "#{backingBean.listofItems}" with "item" variable>
    <row>
        <h:inputText value="#{item.id}" />
        <h:inputText value="#{item.name}" />
        <h:inputText value="#{item.value}" />
        <h:commandButton text="Edit" 
                    actionListener="#{backingBean.editActionListener}" />
        <h:commandButton text="Save" actionListener="#{backingBean.saveActionListener}"
                    action="#{backingBean.saveAction}" />
    </row>
</endloop>
</table component>