1

I am new to java server faces. When I click on submit button values are passed to bean method and inputText field need to be cleared. But here empty values or passed because java script code executes first. How do I send those values and then clear the inputText field?

Here is my code.

index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en"
      xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Facelets </title>
    </h:head>
    <h:body >

        <h:form id="formdata" > 

            <b>FirstName </b> <h:inputText id="fname" value="#{hello.fname}"/><br/><br/>
            <b>LastName </b>  <h:inputText id="lname" value="#{hello.lname}"/> <br/> <br/>        
             <h:commandButton id="submit" value="Submit" action="#{hello.setStudentName()}"  onclick="submitForm()"/>
             <h:commandButton id="viewall" value="View All" action="display"  />
        </h:form> 

        <script language="JavaScript" type="text/javascript"> 
            function submitForm()
            {
                var frm = document.getElementsByName('formdata')[0];
                frm.reset();  // Reset
             }
        </script>

    </h:body>

Hello.java

import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="hello")
@SessionScoped

public class Hello {

     String fname="";
     String lname="";


     ArrayList studentList=new ArrayList();

    public void setFname(String f) {
        fname=f;
    }

    public void setLname(String l) {
        lname=l;
    }

    public String getFname() {
        return fname;
    }

     public String getLname() {
        return lname;
    }

    public void setStudentName(){
       Student s=new Student(fname,lname);
       studentList.add(s);
    }

    public ArrayList getStudentList() {
        return studentList;
    }  
    public void setStudentList(){}   
}

index.xhtml takes the input values and assigned to bean(Hello.java). Suggest me a way where I can submit values when submit clicked and clear the inputtext field.

Tiny
  • 27,221
  • 105
  • 339
  • 599
Anil
  • 123
  • 1
  • 2
  • 9

1 Answers1

1

You can clean in the jsf bean:

 public void setStudentName(){
   Student s=new Student(fname,lname);
   studentList.add(s);
   fname = "";
   lname="";
}
Aviad
  • 1,539
  • 1
  • 9
  • 24