2016-09-06 2 views
0

I erstellt Adrop Liste sich wie folgt zusammen: -Wie erhält man den Parameterwert für eine Dropdown-Liste?

Teacher Name: <select name="teacher" > 
     <c:forEach var="currTeacher" items="${listTeacher}"> 
      <option value="${currTeacher.teacherId}">${currTeacher.teacherName}</option> 
     </c:forEach> 
    </select> 

Der Snapshot für Dropdown-Liste ist here

ich seinen Wert als String teacherName=(String) actionRequest.getParameter("teacher");

Abrufen Aber wenn ich Wert von teacherName bin Druck, es druckt null. Also was könnte das Problem sein? Ich möchte sagen, dass ich das Formular erfolgreich eingereicht habe, und bei der Einreichung rufe ich die Methode addStudent() Inside addStudent() Ich erhalte den Parameter wie oben gezeigt.Bitte helfen. Danke im Voraus.

Der Code für addStudent() ist wie folgt: -

public void addStudent(ActionRequest actionRequest, 
      ActionResponse actionResponse) throws IOException, PortletException,SystemException { 
     try { 
      System.out.println("Student : "+StudentLocalServiceUtil.getStudentByGenderMale()); 
      String firstName = ParamUtil.getString(actionRequest, "firstName"); 
      String lastName = ParamUtil.getString(actionRequest, "lastName"); 
      int studentAge = ParamUtil.getInteger(actionRequest, "studentAge"); 
      int studentGender = ParamUtil.getInteger(actionRequest, "sex", 1); 
      String address = ParamUtil.getString(actionRequest, "address"); 
      String teacherName=(String) actionRequest.getParameter("teacher"); 
      System.out.println("teacher name " + teacherName); 
      // add student record 
      // create primary key 
      long studentId = CounterLocalServiceUtil.increment(); 
      // create student persistance object 
      Student student = null; 
      student = StudentLocalServiceUtil.createStudent(studentId); 
      // fill the data in persistance object 
      student.setFirstName(firstName); 
      student.setLastName(lastName); 
      student.setStudentAge(studentAge); 
      student.setStudentGender(studentGender); 
      student.setStudentAddress(address); 
      // Add student persistance object to database student table 
      student = StudentLocalServiceUtil.addStudent(student); 
      if (student != null) { 
       // adding success message 
       SessionMessages.add(actionRequest.getPortletSession(), 
         "student-add-success"); 
       _log.info("Student have been added successfylly"); 
      } else { 
       SessionErrors.add(actionRequest.getPortletSession(), 
         "student-add-error"); 
       _log.error("There is an Erron in adding Student"); 
      } 
      // navigate to add student jsp page 
      actionResponse.setRenderParameter("mvcPath", 
        "/html/jsps/add_student.jsp"); 
     } catch (Exception e) { 
      SessionErrors.add(actionRequest.getPortletSession(), 
        "student-add-error"); 
      e.printStackTrace(); 
     } 
    } 
+0

konnte zeigen Sie den Code für addStudent() -Methode – Amriteya

+0

Könnten Sie den Code zeigen für ‚ParamUtil‘ Klasse –

+0

ParamUtil Klasse ist die in-built class..It gut so keine Chancen auf Fehler geprüft there..the Der Code von ParamUtil ist sehr lang. Sie können den Code selbst aus dem 'com.liferay.portal.kernel.util.ParamUtil' Paket sehen, das das eingebaute Paket ist, das von Liferay..Thanx im Voraus zur Verfügung gestellt wird –

Antwort

-1

Ich habe die solution..I nur verwendet Legierung ui Form zu schaffen, und ich bekam den Parameterwert, den ich während der Formularübertragung übergeben.

+0

Das Problem ist, dass Sie die Lösung nur erhalten haben, indem Sie das ganze Formular in AUI geändert haben, aber nicht verstanden haben, was das Problem verursacht hat. Dies könnte jedoch dadurch gelöst worden sein, dass nur eine Eigenschaft mit einem vorhandenen Beispiel-HTML-Formular geändert wurde. –

+0

Ich habe das gleiche Problem !!! Könnten Sie bitte weitere Informationen geben, wie Sie es gelöst haben? – German

3

ich ähnliche Art von Problem beobachtet hatte, während ein Vermächtnis Portlet Liferay Migration 6,2

Von Liferay 6.2, Portletaktion Klasse werden nur diejenigen Anfrage Parameter berücksichtigen, die Portlet-Namensraum mit ihnen angehängt haben. Dies ist Standardverhalten der Liferay 6.2 Portlet-Aktionsklasse. more...

Es gibt drei mögliche Lösungen für dieses Problem:

  1. Migrieren Sie Ihre HTML-Beispielformularfelder AUI, die automatisch Portlet-Namespace auf eigene anhängt.
  2. Verwenden Sie Beispiel-HTML-Formularfelder, und hängen Sie Portlet-Namespace manuell an, indem Sie <portlet:namespace/> oder renderResponse.getNamespace() verwenden.
  3. Verwenden Sie Beispiel-HTML-Formularfelder und setzen Sie <requires-namespaced-parameters> auf false in liferay-portlet.xml.
+0

Parkash, kannst du mir bitte sagen, was Abhishek getan hat, um das Problem zu lösen? – German

+0

Abhishek ändert seine Beispiel-HTML-Formularfelder in AUI-Felder. Statt dessen können Sie auch '' auf 'false' in der' liferay-portlet.xml' Ihres Portlets setzen, um das Problem zu lösen. –

Verwandte Themen