HTML and CSS Reference
In-Depth Information
<f:selectItem itemValue="English" itemLabel="English"/>
<f:selectItem itemValue="Others" itemLabel="Others"/>
<div class="form-group">
<h:outputLabel value="Content" for="content"/>
<h:inputFile id="content" value="#{bookAddBacking.filePart}"
class="form-control" required="true"
<h:commandButton value="Save Book" class="btn btn-default"
<f:ajax execute="@form" render="@all"/>
<h:messages id="messages" class="errorMessage"/>
The topic add form includes the corresponding input fields to the Book JPA entity attributes, which were
described in Listing 13-6. When the user clicks the "Save Book" command button, and using the <f:ajax> tag, the
book add form attributes are sent to the server, the #{bookAddBacking.saveBook} action method is executed, and
finally either a success message or a failure message(s) is rendered to the client.
As you notice, the topic add form uses the JSF 2.2 <h:inputFile> component in combination with <f:ajax> in
order to upload the topic content in an Ajaxified way. In order to have this functionality working, you have to make
sure that the form enctype is set to "multipart/form-data" .
there is a bug in Mojarra JSF 2.2 <h:inputFile> component when used with <f:ajax> ; this bug results
in rendering an extra iframe when the response is returned from the server:
JAVASERVERFACES-2851 . in order to solve this issue, you have to use @all in the render attribute of <f:ajax> tag.
Using #{bookAddBacking.validateFile} in the validator attribute of <h:inputFile> , the file size is validated
for not exceeding 1 megabyte and the file type is validated to be of type PDF. BookAddBacking CDI bean which
includes validateFile is shown in Listing 13-31.
Listing 13-31. BookAddBacking CDI Bean
package com.jsfprohtml5.megaapp.backing;
import com.jsfprohtml5.megaapp.model.Book;
import com.jsfprohtml5.megaapp.service.BookManagerLocal;
import com.jsfprohtml5.megaapp.service.exception.BookAlreadyExists;
import java.util.ArrayList;
Search WWH ::

Custom Search