2016-09-06 24 views
0

Я создал adrop список следующим образом: -Как получить значение параметра для выпадающего списка?

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

Снимок для выпадающего списка является here

Я считывание его значения как String teacherName=(String) actionRequest.getParameter("teacher");

Но когда я печать значения teacherName, он печатает нуль. Так что может быть проблемой? Я хочу сказать, что я подал форму успешно и по представлению Я вызываю метод addStudent() Внутри addStudent() Я извлекаю параметр, как показано выше. Пожалуйста, помогите. Thanx заранее.

Код для addStudent() выглядит следующим образом: -

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

Не могли бы вы показать код addStudent() метод – Amriteya

+0

могли бы вы показать код «ParamUtil» класса –

+0

ParamUtil класс является встроенным class..It не хорошо протестировано так что никаких шансов на ошибку there..the код ParamUtil очень длинный. Вы сами видите код из пакета 'com.liferay.portal.kernel.util.ParamUtil', который является встроенным пакетом, предоставленным Liferay ..Thanx заранее –

ответ

-1

Я получил solution..I просто использовали сплав пользовательский интерфейс для создания формы, и я получил значение параметра, который я прошел во время отправки формы.

+0

Проблема в том, что вы получили решение только путем изменения всей формы на AUI, но не понимали, что на самом деле вызывает проблему. Хотя это можно было бы решить, просто изменив одно свойство с существующей образцовой формой HTML. –

+0

У меня такая же проблема !!! Не могли бы вы дать больше информации о том, как вы ее решили? – German

3

Я наблюдал подобный тип вопроса, при переносе унаследованную портлет Liferay 6.2

С Liferay 6.2, класс портлета действие будет рассматривать только те, просьбой об параметры, которые прилагаемую портлета имен с ними. Это поведение по умолчанию класса действия портлета Liferay 6.2. more...

Есть три возможных решения этой проблемы:

  1. перенастроить ваши образцы HTML поля формы для AUI, который автоматически добавляет портлета имен в своих собственных.
  2. Используйте образцы полей формы HTML и вручную добавьте пространство имён портлетов к нему, используя <portlet:namespace/> или renderResponse.getNamespace().
  3. Используйте образцы полей формы HTML и установите <requires-namespaced-parameters> на false в liferay-portlet.xml.
+0

Parkash, не могли бы вы рассказать мне, что Абхишек сделал для решения проблемы? – German

+0

Abhishek сменил свои поля формы HTML-формы на поля AUI. Вместо этого вы можете просто установить '' to 'false' в' liferay-portlet.xml' вашего портлета, также разрешит проблему. –

Смежные вопросы