请求范围JSF2.0中的可编辑数据表

时间:2011-05-04 03:02:24

标签: jsf-2

大家好       我有模块对象列表。我想向用户显示它,用户可以编辑它并且也可以保存它。在模块对象中有三个成员有1个String moduleName 2.boolean readFlag 3. writFlag。

我正在使用的bean在 Request Scop 我不想使用任何其他scop。 我的问题是单击更新按钮时未调用setterOfThatList。 在同一页面上,我使用另一个inputText,调用连接到此inputText的变量的setter。

<h:dataTable value="#{roleBean.listMatrixDo}" var="list">
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Module Name"></h:outputText>
                    </f:facet>
                    <h:outputText value="#{list.moduleDo.moduleName}"></h:outputText>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Read Access"></h:outputText>
                    </f:facet>
                    <h:selectBooleanCheckbox value="#{list.readFlag}" />
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Write Access"></h:outputText>
                    </f:facet>
                    <h:selectBooleanCheckbox value="#{list.writeFlag}" />
                </h:column>
            </h:dataTable>

1 个答案:

答案 0 :(得分:0)

  

我的问题是点击更新按钮时没有调用setterOfThatList

setter 从不调用集合和嵌套属性。 JSF基本上如下:

((RowObject) bean.getList().get(rowIndex)).setSomeProperty(submittedValue);

获取列表,然后按当前索引获取行对象,然后在其上设置属性。如您所见,重要的是在后续请求中已准备好相同的列表(即您需要在bean的构造函数/ postconstruct中执行此操作)。

这与范围无关。但是,在视图和会话范围中,您无需在后续请求中准备列表。我建议在涉及从数据库加载数据时使用视图范围。

如果您的目的是处理/保存提交的数据,那么您应该在附加到命令按钮的bean的action方法中完成这项工作。

public void submit() {
    someService.save(list);
}