问题:根据行的复选框是否显示上传文件的选项,尝试显示h:inputFile
代码。当我想取消选中一行(意味着停止编辑行)并且行仍然以编辑模式显示时,会出现问题。
在编辑行之前:
编辑行时:
取消选中该行而不保存更改(此处发布):
目标:我只想显示图书信息,就像用户根本不想更改图书信息一样(具体示例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>
更新:
我已将LibraryFileBean
与LibraryBean
合并,以在libraryBean.save()
方法中实施更改的书籍封面。我仍然遇到上述同样的问题。
此问题的代码已更改以反映此更新!对此可能造成的不便表示歉意
答案 0 :(得分:0)
您必须将此添加到您的复选框并保存按钮update=":dtLibrary"
,这样表格将再次呈现,并且在save
方法中不要忘记设置book.editable
属性设置为false
。