无法保存动态添加的行

时间:2013-11-12 13:28:26

标签: jsf-2

我在点击commandButton时添加了行dynamicall。 其中我有两个文本字段和一个下拉列表,最后一列是保存。 我能够保存已存在于DB中的旧数据, 但无法保存新添加的行。当我点击save commandLink时,实际上控制没有到达bean。

<div>
                                <div class="float_right">
                                    <p:commandButton styleClass="add_uom"
                                        value="#{msg['uom.add.new.uom']}" process="@this"
                                        actionListener="#{uomBean.addRow}" immediate="true"
                                        update=":uomFormId:languageDetail">
                                    </p:commandButton>
                                </div>

                                <div class="clear">&nbsp;</div>

                                <div>

                                    <h:panelGroup id="languageDetail">
                                        <table width="100%" cellspacing="1" cellpadding="1"
                                            border="0" class="role_detail_section">
                                            <thead>
                                                <tr>
                                                    <ui:repeat var="language" value="#{uomBean.languageList}">
                                                        <th>#{language.languageCode}</th>
                                                    </ui:repeat>
                                                    <th>#{msg['uom.measuremnet.type.heading']}</th>
                                                    <th>#{msg['uom.save']}</th>
                                                    <th>#{msg['uom.activate.deactivate.heading']}</th>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                <ui:repeat var="uom" value="#{uomBean.uomDTOList}">
                                                    <tr>
                                                        <ui:repeat var="uomCountry" value="#{uom.uomList}">
                                                            <td><h:inputText styleClass="values"
                                                                    value="#{uomCountry.languageValue}" /></td>
                                                        </ui:repeat>
                                                        <td><h:selectOneMenu
                                                                value="#{uom.measureTypeId}"
                                                                required="true"
                                                                requiredMessage="#{msg['uom.measurement.error.msg']}">
                                                                <f:selectItem itemLabel="Select" itemValue="0" />
                                                                <f:selectItems value="#{uomBean.measureList}"
                                                                    var="uomtDTO"
                                                                    itemLabel="#{uomtDTO.measurmentTypeValue}"
                                                                    itemValue="#{uomtDTO.measurmentTypeId}" />
                                                            </h:selectOneMenu></td>
                                                        <td>
                                                            <p:commandLink value="Saving.." action="#{uomBean.testUOM()}"  ></p:commandLink>
                                                            </td>
                                                        </td>
                                                    </tr>
                                                </ui:repeat>
                                            </tbody>
                                        </table>
                                    </h:panelGroup>
                                    <h:messages globalOnly="true" />
                                </div>
                            </div>

UOMDTO

private Country country;
private Language language;
private String uomDisplayName;
private String uomDescription;
private List<UOMDetailDTO> uomList;
private Integer measureTypeId;

和UOMDetailDTO是

private String languageName;
private String languageCode;
private String languageValue;

1 个答案:

答案 0 :(得分:0)

很高兴看到uomBean的来源。

我只能猜测,但如果uomBean是请求作用域,则在您单击“保存”时新行已“丢失”,因此无法保存。如果uomBean是视图或会话作用域,那么我猜你会以某种方式重置/重新加载你的uomDTOList,松开新行并得到同样的问题,好像它是请求作用域一样。