Required Attribute(Mandatory Check) not working for File Upload Tag

UI Components for JSF
Post Reply
snehakarthik
Posts: 5
Joined: 14 Jan 2019, 13:00

27 Feb 2019, 08:55

Hi,

I am trying to do the mandatory field check for File upload field in my jsf page but it is not working.
Please help me if there is any other solution to handle this?

My code is as follows:

<p:outputLabel for="merchantImage" value="Merchant Image: " />
<p:fileUpload id="merchantImage" mode="advanced"
fileUploadListener="#{saveMerchantController.handleFileUpload}"
required="true"
requiredMessage="ImageFile is required."
fileLimit="1"/>

<p:message for="merchantImage" />


Regards,
Sneha

kukeltje
Expert Member
Posts: 9605
Joined: 17 Jun 2010, 13:34
Location: Netherlands

27 Feb 2019, 14:33

Please post a full mcve* and version info (both PrimeFaces and JSF (and its implementation name)) and use [ code ] .... [ /code ] tags (without the spaces) to format your code

* https://stackoverflow.com/help/mcve

snehakarthik
Posts: 5
Joined: 14 Jan 2019, 13:00

28 Feb 2019, 17:05

Code: Select all

<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui" template="admin-layout.xhtml">


	<ui:define name="content">
		<h:form enctype="multipart/form-data">
			<h4>Store Details</h4>
			<p:growl id="messages" showDetail="false" globalOnly="true"
				closable="true">
				<p:autoUpdate />
			</p:growl>
			<p:tooltip id="toolTipZipCode" for="zipcode" showEvent="click"
				hideEvent="blur" />
			<h:panelGrid columns="3" cellpadding="5">

				<p:outputLabel for="storeImage" value="Store Image: " />
				<p:fileUpload id="storeImage" mode="advanced"
					fileUploadListener="#{storeController.handleFileUpload}"
					required="true" fileLimit="1" auto="true" update="storeImageDisplay"/>

				<p:graphicImage id="storeImageDisplay" height="100" width="100" value="#{storeController.storeImageContent}" stream="false"/> 

				<p:outputLabel for="storeName" value="Store Name: " />

				<p:inputText id="storeName" size="40"
					value="#{storeController.store.storename}" required="true"
					requiredMessage="Store Name is required" />

				<p:message for="storeName" />

				<p:outputLabel for="contactFirstname" value="Contact First Name: " />

				<p:inputText id="contactFirstname" size="40"
					value="#{storeController.store.contactFirstname}" required="true"
					requiredMessage="First Name is required" />

				<p:message for="contactFirstname" />

				<p:outputLabel for="contactlastname" value="Contact Last Name: " />

				<p:inputText id="contactlastname" size="40"
					value="#{storeController.store.contactlastname}" required="true"
					requiredMessage="Last Name is required" />

				<p:message for="contactlastname" />

				<p:outputLabel for="email" value="Email: " />

				<p:inputText id="email" size="40"
					value="#{storeController.store.email}" required="true"
					requiredMessage="Email is required"
					validatorMessage="Invalid email format. Please enter a valid email address">
					<f:validateRegex
						pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$"
						for="email" />
				</p:inputText>

				<p:message for="email" />

				<p:outputLabel for="mobileNumber"
					value="Mobile Number:  (Prefix with Country Code) " />

				<p:inputMask id="mobileNumber" size="40"
					value="#{storeController.store.mobileNumber}" mask="+999 999999999"
					required="true" requiredMessage="Mobile Number is required" />

				<p:message for="mobileNumber" />

				<p:outputLabel for="addressline1" value="Address: " />

				<p:inputText id="addressline1" size="40"
					value="#{storeController.store.address.addressline1}"
					required="true" requiredMessage="Address Line 1  is required"
					placeholder="Please enter Address Line 1" />

				<p:message for="addressline1" />
				<p:outputLabel />


				<p:inputText id="addressline2" size="40"
					value="#{storeController.store.address.addressline2}"
					required="true" requiredMessage="Address Line 2  is required"
					placeholder="Please enter Address Line 2" />

				<p:message for="addressline2" />
				<p:outputLabel for="zipcode" value="ZipCode: " />
				<p:inputMask id="zipcode" size="40" mask="999999"
					title="For UAE; Please enter ZipCode as 000000"
					value="#{storeController.store.address.zipcode}" required="true"
					requiredMessage="ZipCode is required"
					placeholder="Please enter ZipCode" />
				<p:message for="zipcode" />

				<p:outputLabel for="city" value="City: " />
				<p:inputText id="city" size="40"
					value="#{storeController.store.address.city}" readonly="true" />
				<p:outputLabel />

				<p:outputLabel for="state" value="State: " />
				<p:inputText id="state" size="40"
					value="#{storeController.store.address.state}" readonly="true" />
				<p:outputLabel />
				<p:outputLabel for="country" value="Country: " />
				<p:inputText id="country" size="40"
					value="#{storeController.store.address.country}" readonly="true" />
				<p:outputLabel />
				
				<p:outputLabel for="storeCategorys" value="Select Store Categorys: " rendered="#{storeController.store.id == null}" ajax="false"/>
				<p:selectManyCheckbox id="storeCategorys" value="#{storeController.selectedStoreCategorys}" required="true"
					requiredMessage="Store Categorys are required." layout="grid"
					columns="3" rendered="#{storeController.store.id == null}" converter="storeConverter" ajax="false">
					<f:selectItem itemLabel="Select Store Categorys" itemValue="" noSelectionOption="true" ajax="false"/>
					<f:selectItems
						value="#{storeController.getAllStoreCategorys()}" 
						var="entry" itemValue="#{entry.id}" itemLabel="#{entry.name}" ajax="false"/>
				</p:selectManyCheckbox>

			<p:message for="storeCategorys" ajax="false"/> 
				
			</h:panelGrid>
			<p:commandButton value="Update Store Details"
				action="#{storeController.updateStore}"
				rendered="#{(not storeController.addmode) and (not storeController.storeTableMode) }"
				update="@form" process="@form" />

			<p:commandButton value="Add Store Details"
				action="#{storeController.addStore}"
				rendered="#{storeController.addmode and (not storeController.storeTableMode)}"
				update="@form" process="@form" />

			<p:commandButton value="Update Store Details"
				action="#{storeController.updateStoreFromStorePage}"
				rendered="#{storeController.storeTableMode == true}" update="@form"
				process="@form" />

			<p:confirmDialog global="true" closable="false" showEffect="fade"
				hideEffect="fade" widgetVar="saveStoreConfirmation"
				header="Submit Successful"
				message="Store details submit successful! Navigate back to Store List">
				<p:commandButton value="OK" styleClass="ui-confirmdialog-yes"
					action="#{storeController.returnStoreList()}" process="@this"
					update="@this" />

			</p:confirmDialog>

			<p:confirmDialog global="true" closable="false" showEffect="fade"
				hideEffect="fade" widgetVar="saveStoreConfirmationFromStorePage"
				header="Submit Successful"
				message="Store details submit successful! Navigate back to Store List">
				<p:commandButton value="OK" styleClass="ui-confirmdialog-yes"
					action="#{storeController.returnStores()}" process="@this"
					update="@this" />

			</p:confirmDialog>

		</h:form>

	</ui:define>
</ui:composition>

kukeltje
Expert Member
Posts: 9605
Joined: 17 Jun 2010, 13:34
Location: Netherlands

05 Mar 2019, 11:42

Waaaaay to much code on one hand and too little (incomplete etc) at the same time


https://stackoverflow.com/help/mcve

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 32 guests