使用复选框

时间:2016-04-27 20:38:31

标签: ajax jsf checkbox

问题:根据行的复选框是否显示上传文件的选项,尝试显示h:inputFile代码。当我想取消选中一行(意味着停止编辑行)并且行仍然以编辑模式显示时,会出现问题。

在编辑行之前:

Before clicking on checkbox

编辑行时:

While editing a row

取消选中该行而不保存更改(此处发布):

Current issue

目标:我只想显示图书信息,就像用户根本不想更改图书信息一样(具体示例1 )。用户使用libraryBean.save()方法(具体示例2 )保存更改后,仍会显示此问题。

简而言之,我希望当用户取消选中行或保存更改后,结果看起来像示例1。

问题代码:

<h:inputFile id="file" label="file" style="margin-top: 10px"
    value="#{libraryBean.part}"
    validator="#{libraryBean.validateFile}"
    rendered="#{book.editable}"/>

其他信息:

XMLNS库:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">

LibraryBean是@SessionScoped

完整代码:

<h:form id="frmlibrary" enctype="multipart/form-data">
    <ui:fragment rendered="#{not empty libraryBean.books}">
        <div class="panel panel-default">
            <h:dataTable value="#{libraryBean.books}" class="table table-bordered"
                         var="book" border="1" id="dtLibrary" rendered="#{not empty libraryBean.books}">
                <h:column>
                    <f:facet name="header">Edit</f:facet>
                    <h:selectBooleanCheckbox class="checkbox" value="#{book.editable}" onclick="submit()" />
                </h:column>
                <h:column>
                    <f:facet name="header">Book Cover</f:facet>
                    <image src="ImageServlet?fileID=#{book.libID}"
                           height="150" width="100" />
                    <h:inputFile id="file" label="file" style="margin-top: 10px"
                                 value="#{libraryBean.part}"
                                 validator="#{libraryBean.validateFile}"
                                 rendered="#{book.editable}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">Title</f:facet>
                    <h:inputText value="#{book.title}" class="form-control"
                                 rendered="#{book.editable}" size="20"/>
                    <h:outputText value="#{book.title}" 
                                  rendered="#{not book.editable}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">Author</f:facet>
                    <h:inputText value="#{book.author}" class="form-control"
                                 rendered="#{book.editable}" size="20"/>
                    <h:outputText value="#{book.author}" 
                                  rendered="#{not book.editable}"/>
                </h:column>
            </h:dataTable>
        </div>
    </ui:fragment>
    <h:commandButton value="Save Library" class="btn btn-info"
                     action="#{libraryBean.save()}" rendered="#{not empty libraryBean.books}"/>
</h:form>

更新:

我已将LibraryFileBeanLibraryBean合并,以在libraryBean.save()方法中实施更改的书籍封面。我仍然遇到上述同样的问题。

此问题的代码已更改以反映此更新!对此可能造成的不便表示歉意

1 个答案:

答案 0 :(得分:0)

您必须将此添加到您的复选框并保存按钮update=":dtLibrary",这样表格将再次呈现,并且在save方法中不要忘记设置book.editable属性设置为false