This discussion is archived
10 Replies Latest reply: Jan 2, 2013 3:33 AM by 976758 RSS

Clearing af:inputfile when choosing wrong file.

976758 Newbie
Currently Being Moderated
Hi All,

I am trying to upload excel sheet data into adf page(database table),if i choose wrong file it will show error and have to clear the af:inputfile.i am able to show error message,but unable to clear the af:inputfile.

Can any one help me on how to clear the af:inputfile.I am using jdeveloper 11.1.2.3.0


Thanks in Advance!!


Regards
Amar
  • 2. Re: Clearing af:inputfile when choosing wrong file.
    Suresh Karunarathne Guru
    Currently Being Moderated
    Hi,
    You have to set null for
     <af:inputFile columns="45" id="ifUp"
                                  value="#{pageFlowScope..Bean.inputFileVal}"/>
    
        private UploadedFile inputFileVal;
        public void setInputFileVal(UploadedFile inputFileVal) {
            this.inputFileVal = inputFileVal;
        }
    
        public UploadedFile getInputFileVal() {
            return inputFileVal;
        }
    
    //Set null in your reset action
     inputFileVal = null;
    
    //and refresh the UI component
  • 3. Clearing af:inputfile when choosing wrong file.
    976758 Newbie
    Currently Being Moderated
    Hi,

    thanx for the reply!but i couldn't find the reset action and how can i refresh the UI Component?

    -tried also ppr doesn't work
    i tried the following way!!

    here is my code in backing bean.


    public class FileProcessor {

    private CSVtoADFTableProcessor tablecreator;
    private UploadedFile uploadedFile;
    private String filename;
    private long filesize;
    private String filecontents;
    private String filetype;
    private RichMessages errorMsg;
    private RichInputFile inputFile;


    public FileProcessor() {
    }
    public void setUploadedFile(UploadedFile uploadedFile) {
    this.uploadedFile = uploadedFile;
    this.filename = uploadedFile.getFilename();
    this.filesize = uploadedFile.getLength();
    this.filetype = uploadedFile.getContentType();
    try {
    if (filename.endsWith(".csv"))
    tablecreator.processCSV(uploadedFile.getInputStream());
    else if(filename.endsWith(".xls")){
    tablecreator.fileSubmit(uploadedFile.getInputStream());
    }
    //tablecreator.WriteXLS(uploadedFile.getInputStream());

    else if (filename.endsWith(".xlsx")){
    tablecreator.fileSubmitXSSF(uploadedFile.getInputStream());
    }
    //Wrong file upload
    else{
    inputFile.resetValue();
    String msg="this is a global message.";
    FacesContext ctx =FacesContext.getCurrentInstance();
    FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, "Please Upload proper file");
    ctx.addMessage(null,fm);
    }

    } catch (IOException e) {
    e.printStackTrace();
    }
    }
  • 4. Re: Clearing af:inputfile when choosing wrong file.
    Suresh Karunarathne Guru
    Currently Being Moderated
    Hi,
    Bind inputFile to bean and Use following code stuff to refresh the RichInputFile(UIComponent)
            AdfFacesContext adfFacesCtx = AdfFacesContext.getCurrentInstance();
             adfFacesCtx.addPartialTarget(UIComponent);
  • 5. Re: Clearing af:inputfile when choosing wrong file.
    976758 Newbie
    Currently Being Moderated
    Hi Suresh,

    Thanx for reply!!

    I had tried in following way!couldn't get it.

    I created RichInputFile property for af:inputfile and write the code in bean following way!Is it currect?I couldn't find reset action propery in af:inputfile properties.

    //Wrong File upload
    else{
    inputFile.resetValue();
    AdfFacesContext adfFacesCtx = AdfFacesContext.getCurrentInstance();
    adfFacesCtx.addPartialTarget(inputFile);
    String msg="this is a global message.";
    FacesContext ctx =FacesContext.getCurrentInstance();
    FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, "Please Upload proper file");
    ctx.addMessage(null,fm);
    }

    Edited by: 973755 on Dec 27, 2012 8:47 PM
  • 6. Re: Clearing af:inputfile when choosing wrong file.
    Suresh Karunarathne Guru
    Currently Being Moderated
    Hi,
    try as follows if not helpful please post all code you have used in page and bean
    ..
    else{
    //inputFile.resetValue();
    inputFile = null;//use this
    AdfFacesContext adfFacesCtx = AdfFacesContext.getCurrentInstance();
    //adfFacesCtx.addPartialTarget(inputFile); 
    adfFacesCtx.addPartialTarget(uploadedFile); //use this
    String msg="this is a global message.";
    FacesContext ctx =FacesContext.getCurrentInstance();
    FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, "Please Upload proper file");
    ctx.addMessage(null,fm);
    }
  • 7. Re: Clearing af:inputfile when choosing wrong file.
    976758 Newbie
    Currently Being Moderated
    Hi Suresh,

    The code is not working,it is showing error that input file is null.

    please find the following code in the bean.

    package xxorn.model.view;

    import java.io.BufferedReader;
    import java.io.IOException;

    import java.io.InputStream;
    import java.io.InputStreamReader;

    import javax.faces.application.FacesMessage;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ActionEvent;

    import oracle.adf.view.rich.component.rich.input.RichInputFile;
    import oracle.adf.view.rich.component.rich.output.RichMessages;

    import oracle.adf.view.rich.context.AdfFacesContext;

    import org.apache.myfaces.trinidad.model.UploadedFile;

    public class FileProcessor {

    private CSVtoADFTableProcessor tablecreator;
    private UploadedFile uploadedFile;
    private String filename;
    private long filesize;
    private String filecontents;
    private String filetype;
    private RichMessages errorMsg;
    private RichInputFile inputFile;


    public FileProcessor() {
    }

    public void setUploadedFile(UploadedFile uploadedFile) {
    this.uploadedFile = uploadedFile;
    this.filename = uploadedFile.getFilename();
    this.filesize = uploadedFile.getLength();
    this.filetype = uploadedFile.getContentType();
    try {
    if (filename.endsWith(".csv"))
    tablecreator.processCSV(uploadedFile.getInputStream());
    else if(filename.endsWith(".xls")){
    tablecreator.fileSubmit(uploadedFile.getInputStream());
    }
    //tablecreator.WriteXLS(uploadedFile.getInputStream());

    else if (filename.endsWith(".xlsx")){
    tablecreator.fileSubmitXSSF(uploadedFile.getInputStream());
    }
    //wrong file upload
    else{
    System.out.println("1******************************"+inputFile.getValue().toString());
    inputFile.resetValue();
    inputFile.setValue(null);
    System.out.println("2******************************"+inputFile.getValue().toString());
    AdfFacesContext adfFacesCtx = AdfFacesContext.getCurrentInstance();
    adfFacesCtx.addPartialTarget(inputFile);
    String msg="this is a global message.";
    FacesContext ctx =FacesContext.getCurrentInstance();
    FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, "Please Upload proper file");
    ctx.addMessage(null,fm);
    }


    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    public UploadedFile getUploadedFile() {
    return uploadedFile;
    }

    public void setFilename(String filename) {
    this.filename = filename;
    }

    public String getFilename() {
    return filename;
    }

    public void setFilesize(long filesize) {
    this.filesize = filesize;
    }

    public long getFilesize() {
    return filesize;
    }

    public void setFilecontents(String filecontents) {
    this.filecontents = filecontents;
    }

    public String getFilecontents() {
    return filecontents;
    }

    public void setFiletype(String filetype) {
    this.filetype = filetype;
    }

    public String getFiletype() {
    return filetype;
    }

    public void setTablecreator(CSVtoADFTableProcessor tablecreator) {
    this.tablecreator = tablecreator;
    }

    public CSVtoADFTableProcessor getTablecreator() {
    return tablecreator;
    }

    public void setErrorMsg(RichMessages errorMsg) {

    this.errorMsg = errorMsg;
    }

    public RichMessages getErrorMsg() {
    return errorMsg;
    }

    public void checkFile(ActionEvent actionEvent) {
    // Add event code here...
    }

    public void setInputFile(RichInputFile inputFile) {
    this.inputFile = inputFile;
    }

    public RichInputFile getInputFile() {
    return inputFile;
    }
    }
  • 8. Re: Clearing af:inputfile when choosing wrong file.
    976758 Newbie
    Currently Being Moderated
    Hi,

    Could anyone help on this.


    Thanks
  • 9. Re: Clearing af:inputfile when choosing wrong file.
    976758 Newbie
    Currently Being Moderated
    Hi Suresh,

    My page has following code is as fallows.

    <?xml version='1.0' encoding='UTF-8'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core"

    xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:h="http://java.sun.com/jsf/html">
    <jsp:directive.page contentType="text/html;charset=UTF-8"/>
    <f:view>
    <af:document title="ExcelToTable.jspx" id="d1">
    <af:messages id="m1"/>
    <af:form id="f1" usesUpload="true">
    <af:pageTemplate viewId="/oracle/templates/threeColumnTemplate.jspx" id="pt1">
    <f:facet name="center">
    <af:panelSplitter id="ps1" orientation="vertical" splitterPosition="146">
    <f:facet name="first">
    <af:panelFormLayout id="pfl2">
    <af:panelLabelAndMessage label="#{bindings.Deptno.hints.label}" id="plam1">
    <af:outputText value="#{bindings.Deptno.inputValue}" id="ot1">
    <af:convertNumber groupingUsed="false" pattern="#{bindings.Deptno.format}"/>
    </af:outputText>
    </af:panelLabelAndMessage>
    <af:panelLabelAndMessage label="#{bindings.Dname.hints.label}" id="plam2">
    <af:outputText value="#{bindings.Dname.inputValue}" id="ot2"/>
    </af:panelLabelAndMessage>
    <af:panelLabelAndMessage label="#{bindings.Loc.hints.label}" id="plam3">
    <af:outputText value="#{bindings.Loc.inputValue}" id="ot3"/>
    </af:panelLabelAndMessage>
    <f:facet name="footer">
    <af:panelGroupLayout layout="vertical" id="pgl2">
    <af:panelGroupLayout layout="horizontal" id="pgl3">
    <f:facet name="separator">
    <af:spacer width="10" height="1" id="s1"/>
    </f:facet>
    <af:commandButton actionListener="#{bindings.First.execute}"
    text="First" disabled="#{!bindings.First.enabled}"
    partialSubmit="true" id="cb1"/>
    <af:commandButton actionListener="#{bindings.Previous.execute}"
    text="Previous"
    disabled="#{!bindings.Previous.enabled}"
    partialSubmit="true" id="cb4"/>
    <af:commandButton actionListener="#{bindings.Next.execute}" text="Next"
    disabled="#{!bindings.Next.enabled}"
    partialSubmit="true" id="cb5"/>
    <af:commandButton actionListener="#{bindings.Last.execute}" text="Last"
    disabled="#{!bindings.Last.enabled}"
    partialSubmit="true" id="cb6"/>
    </af:panelGroupLayout>
    <af:commandButton text="Submit" id="cb7"/>
    </af:panelGroupLayout>
    </f:facet>
    </af:panelFormLayout>
    </f:facet>
    <f:facet name="second">
    <af:panelCollection id="pc1">
    <f:facet name="menus"/>
    <f:facet name="toolbar">
    <af:toolbar id="t2">
    <af:commandButton actionListener="#{bindings.CreateInsert.execute}"
    text="InsertRow"
    disabled="#{!bindings.CreateInsert.enabled}" id="cb2"
    immediate="true"/>
    <af:commandButton actionListener="#{bindings.Delete.execute}"
    text="DeleteRow"
    disabled="#{!bindings.Delete.enabled}" id="cb3"
    immediate="true"/>
    </af:toolbar>
    </f:facet>
    <f:facet name="statusbar"/>
    <af:table value="#{bindings.EmpView3.collectionModel}" var="row"
    rows="#{bindings.EmpView3.rangeSize}"
    emptyText="#{bindings.EmpView3.viewable ? 'No data to display.' : 'Access Denied.'}"
    fetchSize="#{bindings.EmpView3.rangeSize}" rowBandingInterval="0"
    filterModel="#{bindings.EmpView3Query.queryDescriptor}"
    queryListener="#{bindings.EmpView3Query.processQuery}"
    filterVisible="true" varStatus="vs"
    selectedRowKeys="#{bindings.EmpView3.collectionModel.selectedRow}"
    selectionListener="#{bindings.EmpView3.collectionModel.makeCurrent}"
    rowSelection="single" id="t1" partialTriggers="::cb2 ::cb3">
    <af:column sortProperty="#{bindings.EmpView3.hints.Empno.name}"
    filterable="true" sortable="true"
    headerText="#{bindings.EmpView3.hints.Empno.label}" id="c1">
    <af:inputText value="#{row.bindings.Empno.inputValue}"
    label="#{bindings.EmpView3.hints.Empno.label}"
    required="#{bindings.EmpView3.hints.Empno.mandatory}"
    columns="#{bindings.EmpView3.hints.Empno.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Empno.precision}"
    shortDesc="#{bindings.EmpView3.hints.Empno.tooltip}" id="it1">
    <f:validator binding="#{row.bindings.Empno.validator}"/>
    <af:convertNumber groupingUsed="false"
    pattern="#{bindings.EmpView3.hints.Empno.format}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Ename.name}"
    filterable="true" sortable="true"
    headerText="#{bindings.EmpView3.hints.Ename.label}" id="c2">
    <af:inputText value="#{row.bindings.Ename.inputValue}"
    label="#{bindings.EmpView3.hints.Ename.label}"
    required="#{bindings.EmpView3.hints.Ename.mandatory}"
    columns="#{bindings.EmpView3.hints.Ename.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Ename.precision}"
    shortDesc="#{bindings.EmpView3.hints.Ename.tooltip}" id="it2">
    <f:validator binding="#{row.bindings.Ename.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Job.name}" filterable="true"
    sortable="true" headerText="#{bindings.EmpView3.hints.Job.label}"
    id="c3">
    <af:inputText value="#{row.bindings.Job.inputValue}"
    label="#{bindings.EmpView3.hints.Job.label}"
    required="#{bindings.EmpView3.hints.Job.mandatory}"
    columns="#{bindings.EmpView3.hints.Job.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Job.precision}"
    shortDesc="#{bindings.EmpView3.hints.Job.tooltip}" id="it3">
    <f:validator binding="#{row.bindings.Job.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Mgr.name}" filterable="true"
    sortable="true" headerText="#{bindings.EmpView3.hints.Mgr.label}"
    id="c4">
    <af:inputText value="#{row.bindings.Mgr.inputValue}"
    label="#{bindings.EmpView3.hints.Mgr.label}"
    required="#{bindings.EmpView3.hints.Mgr.mandatory}"
    columns="#{bindings.EmpView3.hints.Mgr.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Mgr.precision}"
    shortDesc="#{bindings.EmpView3.hints.Mgr.tooltip}" id="it4">
    <f:validator binding="#{row.bindings.Mgr.validator}"/>
    <af:convertNumber groupingUsed="false"
    pattern="#{bindings.EmpView3.hints.Mgr.format}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Hiredate.name}"
    filterable="true" sortable="true"
    headerText="#{bindings.EmpView3.hints.Hiredate.label}" id="c5">
    <f:facet name="filter">
    <af:inputDate value="#{vs.filterCriteria.Hiredate}" id="id1">
    <af:convertDateTime pattern="#{bindings.EmpView3.hints.Hiredate.format}"/>
    </af:inputDate>
    </f:facet>
    <af:inputDate value="#{row.bindings.Hiredate.inputValue}"
    label="#{bindings.EmpView3.hints.Hiredate.label}"
    required="#{bindings.EmpView3.hints.Hiredate.mandatory}"
    columns="#{bindings.EmpView3.hints.Hiredate.displayWidth}"
    shortDesc="#{bindings.EmpView3.hints.Hiredate.tooltip}"
    id="id2">
    <f:validator binding="#{row.bindings.Hiredate.validator}"/>
    <af:convertDateTime pattern="#{bindings.EmpView3.hints.Hiredate.format}"/>
    </af:inputDate>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Sal.name}" filterable="true"
    sortable="true" headerText="#{bindings.EmpView3.hints.Sal.label}"
    id="c6">
    <af:inputText value="#{row.bindings.Sal.inputValue}"
    label="#{bindings.EmpView3.hints.Sal.label}"
    required="#{bindings.EmpView3.hints.Sal.mandatory}"
    columns="#{bindings.EmpView3.hints.Sal.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Sal.precision}"
    shortDesc="#{bindings.EmpView3.hints.Sal.tooltip}" id="it5">
    <f:validator binding="#{row.bindings.Sal.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Comm.name}" filterable="true"
    sortable="true" headerText="#{bindings.EmpView3.hints.Comm.label}"
    id="c7">
    <af:inputText value="#{row.bindings.Comm.inputValue}"
    label="#{bindings.EmpView3.hints.Comm.label}"
    required="#{bindings.EmpView3.hints.Comm.mandatory}"
    columns="#{bindings.EmpView3.hints.Comm.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Comm.precision}"
    shortDesc="#{bindings.EmpView3.hints.Comm.tooltip}" id="it6">
    <f:validator binding="#{row.bindings.Comm.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Deptno.name}"
    filterable="true" sortable="true"
    headerText="#{bindings.EmpView3.hints.Deptno.label}" id="c8">
    <af:inputText value="#{row.bindings.Deptno.inputValue}"
    label="#{bindings.EmpView3.hints.Deptno.label}"
    required="#{bindings.EmpView3.hints.Deptno.mandatory}"
    columns="#{bindings.EmpView3.hints.Deptno.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Deptno.precision}"
    shortDesc="#{bindings.EmpView3.hints.Deptno.tooltip}"
    id="it7">
    <f:validator binding="#{row.bindings.Deptno.validator}"/>
    <af:convertNumber groupingUsed="false"
    pattern="#{bindings.EmpView3.hints.Deptno.format}"/>
    </af:inputText>
    </af:column>
    </af:table>
    </af:panelCollection>
    </f:facet>
    </af:panelSplitter>
    </f:facet>
    <f:facet name="header"/>
    <f:facet name="start">
    <af:panelGroupLayout id="pgl1">
    <af:panelFormLayout id="pfl1">
    <f:facet name="footer">
    <af:commandButton text="Upload" id="uploadButton"
    actionListener="#{FileProcessor.checkFile}" partialSubmit="true"/>
    </f:facet>
    <af:inputFile label="EmpFile" id="if1" value="#{FileProcessor.uploadedFile}"
    partialTriggers="uploadButton" binding="#{FileProcessor.inputFile}"/>
    <af:messages id="m2"/>
    </af:panelFormLayout>
    </af:panelGroupLayout>

    </f:facet>
    <f:facet name="branding"/>
    <f:facet name="copyright"/>
    <f:facet name="status"/>
    </af:pageTemplate>
    </af:form>
    </af:document>
    </f:view>
    </jsp:root>


    Thanks.
  • 10. Re: Clearing af:inputfile when choosing wrong file.
    976758 Newbie
    Currently Being Moderated
    Hi Suresh,

    following code contailns in Jspx page.

    <?xml version='1.0' encoding='UTF-8'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core"

    xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:h="http://java.sun.com/jsf/html">
    <jsp:directive.page contentType="text/html;charset=UTF-8"/>
    <f:view>
    <af:document title="ExcelToTable.jspx" id="d1">
    <af:messages id="m1"/>
    <af:form id="f1" usesUpload="true">
    <af:pageTemplate viewId="/oracle/templates/threeColumnTemplate.jspx" id="pt1">
    <f:facet name="center">
    <af:panelSplitter id="ps1" orientation="vertical" splitterPosition="146">
    <f:facet name="first">
    <af:panelFormLayout id="pfl2">
    <af:panelLabelAndMessage label="#{bindings.Deptno.hints.label}" id="plam1">
    <af:outputText value="#{bindings.Deptno.inputValue}" id="ot1">
    <af:convertNumber groupingUsed="false" pattern="#{bindings.Deptno.format}"/>
    </af:outputText>
    </af:panelLabelAndMessage>
    <af:panelLabelAndMessage label="#{bindings.Dname.hints.label}" id="plam2">
    <af:outputText value="#{bindings.Dname.inputValue}" id="ot2"/>
    </af:panelLabelAndMessage>
    <af:panelLabelAndMessage label="#{bindings.Loc.hints.label}" id="plam3">
    <af:outputText value="#{bindings.Loc.inputValue}" id="ot3"/>
    </af:panelLabelAndMessage>
    <f:facet name="footer">
    <af:panelGroupLayout layout="vertical" id="pgl2">
    <af:panelGroupLayout layout="horizontal" id="pgl3">
    <f:facet name="separator">
    <af:spacer width="10" height="1" id="s1"/>
    </f:facet>
    <af:commandButton actionListener="#{bindings.First.execute}"
    text="First" disabled="#{!bindings.First.enabled}"
    partialSubmit="true" id="cb1"/>
    <af:commandButton actionListener="#{bindings.Previous.execute}"
    text="Previous"
    disabled="#{!bindings.Previous.enabled}"
    partialSubmit="true" id="cb4"/>
    <af:commandButton actionListener="#{bindings.Next.execute}" text="Next"
    disabled="#{!bindings.Next.enabled}"
    partialSubmit="true" id="cb5"/>
    <af:commandButton actionListener="#{bindings.Last.execute}" text="Last"
    disabled="#{!bindings.Last.enabled}"
    partialSubmit="true" id="cb6"/>
    </af:panelGroupLayout>
    <af:commandButton text="Submit" id="cb7"/>
    </af:panelGroupLayout>
    </f:facet>
    </af:panelFormLayout>
    </f:facet>
    <f:facet name="second">
    <af:panelCollection id="pc1">
    <f:facet name="menus"/>
    <f:facet name="toolbar">
    <af:toolbar id="t2">
    <af:commandButton actionListener="#{bindings.CreateInsert.execute}"
    text="InsertRow"
    disabled="#{!bindings.CreateInsert.enabled}" id="cb2"
    immediate="true"/>
    <af:commandButton actionListener="#{bindings.Delete.execute}"
    text="DeleteRow"
    disabled="#{!bindings.Delete.enabled}" id="cb3"
    immediate="true"/>
    </af:toolbar>
    </f:facet>
    <f:facet name="statusbar"/>
    <af:table value="#{bindings.EmpView3.collectionModel}" var="row"
    rows="#{bindings.EmpView3.rangeSize}"
    emptyText="#{bindings.EmpView3.viewable ? 'No data to display.' : 'Access Denied.'}"
    fetchSize="#{bindings.EmpView3.rangeSize}" rowBandingInterval="0"
    filterModel="#{bindings.EmpView3Query.queryDescriptor}"
    queryListener="#{bindings.EmpView3Query.processQuery}"
    filterVisible="true" varStatus="vs"
    selectedRowKeys="#{bindings.EmpView3.collectionModel.selectedRow}"
    selectionListener="#{bindings.EmpView3.collectionModel.makeCurrent}"
    rowSelection="single" id="t1" partialTriggers="::cb2 ::cb3">
    <af:column sortProperty="#{bindings.EmpView3.hints.Empno.name}"
    filterable="true" sortable="true"
    headerText="#{bindings.EmpView3.hints.Empno.label}" id="c1">
    <af:inputText value="#{row.bindings.Empno.inputValue}"
    label="#{bindings.EmpView3.hints.Empno.label}"
    required="#{bindings.EmpView3.hints.Empno.mandatory}"
    columns="#{bindings.EmpView3.hints.Empno.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Empno.precision}"
    shortDesc="#{bindings.EmpView3.hints.Empno.tooltip}" id="it1">
    <f:validator binding="#{row.bindings.Empno.validator}"/>
    <af:convertNumber groupingUsed="false"
    pattern="#{bindings.EmpView3.hints.Empno.format}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Ename.name}"
    filterable="true" sortable="true"
    headerText="#{bindings.EmpView3.hints.Ename.label}" id="c2">
    <af:inputText value="#{row.bindings.Ename.inputValue}"
    label="#{bindings.EmpView3.hints.Ename.label}"
    required="#{bindings.EmpView3.hints.Ename.mandatory}"
    columns="#{bindings.EmpView3.hints.Ename.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Ename.precision}"
    shortDesc="#{bindings.EmpView3.hints.Ename.tooltip}" id="it2">
    <f:validator binding="#{row.bindings.Ename.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Job.name}" filterable="true"
    sortable="true" headerText="#{bindings.EmpView3.hints.Job.label}"
    id="c3">
    <af:inputText value="#{row.bindings.Job.inputValue}"
    label="#{bindings.EmpView3.hints.Job.label}"
    required="#{bindings.EmpView3.hints.Job.mandatory}"
    columns="#{bindings.EmpView3.hints.Job.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Job.precision}"
    shortDesc="#{bindings.EmpView3.hints.Job.tooltip}" id="it3">
    <f:validator binding="#{row.bindings.Job.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Mgr.name}" filterable="true"
    sortable="true" headerText="#{bindings.EmpView3.hints.Mgr.label}"
    id="c4">
    <af:inputText value="#{row.bindings.Mgr.inputValue}"
    label="#{bindings.EmpView3.hints.Mgr.label}"
    required="#{bindings.EmpView3.hints.Mgr.mandatory}"
    columns="#{bindings.EmpView3.hints.Mgr.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Mgr.precision}"
    shortDesc="#{bindings.EmpView3.hints.Mgr.tooltip}" id="it4">
    <f:validator binding="#{row.bindings.Mgr.validator}"/>
    <af:convertNumber groupingUsed="false"
    pattern="#{bindings.EmpView3.hints.Mgr.format}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Hiredate.name}"
    filterable="true" sortable="true"
    headerText="#{bindings.EmpView3.hints.Hiredate.label}" id="c5">
    <f:facet name="filter">
    <af:inputDate value="#{vs.filterCriteria.Hiredate}" id="id1">
    <af:convertDateTime pattern="#{bindings.EmpView3.hints.Hiredate.format}"/>
    </af:inputDate>
    </f:facet>
    <af:inputDate value="#{row.bindings.Hiredate.inputValue}"
    label="#{bindings.EmpView3.hints.Hiredate.label}"
    required="#{bindings.EmpView3.hints.Hiredate.mandatory}"
    columns="#{bindings.EmpView3.hints.Hiredate.displayWidth}"
    shortDesc="#{bindings.EmpView3.hints.Hiredate.tooltip}"
    id="id2">
    <f:validator binding="#{row.bindings.Hiredate.validator}"/>
    <af:convertDateTime pattern="#{bindings.EmpView3.hints.Hiredate.format}"/>
    </af:inputDate>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Sal.name}" filterable="true"
    sortable="true" headerText="#{bindings.EmpView3.hints.Sal.label}"
    id="c6">
    <af:inputText value="#{row.bindings.Sal.inputValue}"
    label="#{bindings.EmpView3.hints.Sal.label}"
    required="#{bindings.EmpView3.hints.Sal.mandatory}"
    columns="#{bindings.EmpView3.hints.Sal.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Sal.precision}"
    shortDesc="#{bindings.EmpView3.hints.Sal.tooltip}" id="it5">
    <f:validator binding="#{row.bindings.Sal.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Comm.name}" filterable="true"
    sortable="true" headerText="#{bindings.EmpView3.hints.Comm.label}"
    id="c7">
    <af:inputText value="#{row.bindings.Comm.inputValue}"
    label="#{bindings.EmpView3.hints.Comm.label}"
    required="#{bindings.EmpView3.hints.Comm.mandatory}"
    columns="#{bindings.EmpView3.hints.Comm.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Comm.precision}"
    shortDesc="#{bindings.EmpView3.hints.Comm.tooltip}" id="it6">
    <f:validator binding="#{row.bindings.Comm.validator}"/>
    </af:inputText>
    </af:column>
    <af:column sortProperty="#{bindings.EmpView3.hints.Deptno.name}"
    filterable="true" sortable="true"
    headerText="#{bindings.EmpView3.hints.Deptno.label}" id="c8">
    <af:inputText value="#{row.bindings.Deptno.inputValue}"
    label="#{bindings.EmpView3.hints.Deptno.label}"
    required="#{bindings.EmpView3.hints.Deptno.mandatory}"
    columns="#{bindings.EmpView3.hints.Deptno.displayWidth}"
    maximumLength="#{bindings.EmpView3.hints.Deptno.precision}"
    shortDesc="#{bindings.EmpView3.hints.Deptno.tooltip}"
    id="it7">
    <f:validator binding="#{row.bindings.Deptno.validator}"/>
    <af:convertNumber groupingUsed="false"
    pattern="#{bindings.EmpView3.hints.Deptno.format}"/>
    </af:inputText>
    </af:column>
    </af:table>
    </af:panelCollection>
    </f:facet>
    </af:panelSplitter>
    </f:facet>
    <f:facet name="header"/>
    <f:facet name="start">
    <af:panelGroupLayout id="pgl1">
    <af:panelFormLayout id="pfl1">
    <f:facet name="footer">
    <af:commandButton text="Upload" id="uploadButton"
    actionListener="#{FileProcessor.checkFile}" partialSubmit="true"/>
    </f:facet>
    <af:inputFile label="EmpFile" id="if1" value="#{FileProcessor.uploadedFile}"
    partialTriggers="uploadButton" binding="#{FileProcessor.inputFile}"/>
    <af:messages id="m2"/>
    </af:panelFormLayout>
    </af:panelGroupLayout>

    </f:facet>
    <f:facet name="branding"/>
    <f:facet name="copyright"/>
    <f:facet name="status"/>
    </af:pageTemplate>
    </af:form>
    </af:document>
    </f:view>
    </jsp:root>

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points