0

伙计们,

这是我与 JSF 合作的第二天,如果我的问题不是很清楚,请多多包涵,我会尽量说清楚。

从附加的屏幕中,您可以看到第一行为空白的表格,而从第二行您可以看到表格条目。

我想做的是,我想使用表格的第一行作为一个条目,我可以在其中输入 ID、名称和值的值。

我单击“保存”按钮后,该行应该被添加到数据库中,并且应该被获取并显示。我对数据库部分没有任何问题。

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

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

当我点击保存按钮时对 TextField 进行更改后,我需要禁用它。

我希望该行类似于表的第一行,但其中包含值以对其进行编辑。如何做到这一点?

2) 是否可以参考按钮的 id 并检查它是启用还是禁用来呈现 Textfields(ID, Name and Value) ?

这是表格的列代码

<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。

在此处输入图像描述

4

1 回答 1

0

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

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;
    }
}

现在在 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>
于 2012-10-13T18:14:07.427 回答