Как получить данные формы в угловой контроллер и передать их сервлету? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть форма, которая содержит два тега <select>. Один - это список года, другой - список дозировок.

Когда я выбираю опции, я могу получить selectedYear в моем контроллере, используя ng-модель, но не могу получить selectedDosage. И когда я пытаюсь отправить эти данные в мой сервлет, в качестве значения возвращается ноль.

Любые предложения, которые я ценю JSON

Dosages:[
    {"name":"Tablet"},
    {"name":"Syrups and Suspension"},
    {"name":"Non-Antibiotic Capsules"},
    {"name":"Antibiotic Capsules"},
    {"name":"Dry Powder for Suspension"},
    {"name":"ORS"},
    {"name":"Antiseptics"}
]
Years:{"json1":"[
    {\"years\":2018},
    {\"years\":2017},
    {\"years\":2016},
    {\"years\":2015}]"

HTML

<form  ng-submit="Display()">

    <select class="form-control" ng-model="selectedYear">
        <option value="" selected disabled>Select Year</option>
        <option   ng-repeat="option in years" ng-value="{{option.years}}" >
          {{option.years}}
        </option>
    </select>
    <br>
    <select class="form-control" ng-model="selectedDo">
        <option value="" selected disabled>Select Dosage</option>
        <option  ng-repeat="option in section" ng-value="{{option.name}}"  >
          {{option.name}}
        </option>
    </select>

    <input type="submit" value="Submit"/>       
</form>

Контроллер

$scope.selectedDo;
$scope.selectedYear;
$scope.Display=function(){

    $window.alert($scope.selectedDo+"..."+ $scope.selectedYear);
    $http({
        method:"post",
        url:"/com.az.BusinessRatioAnalysis/SectionServlet",
        data:{
           year:$scope.selectedYear,
           dosage:$scope.selectedDo,
        }
    }).then(function(result){
        $window.alert("Ajex call failed" + result);                             
    });
};

Servlet

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String year=request.getParameter("year");
        String dosage=request.getParameter("dosage");
                System.out.println(year+".."+dosage);
    }


1 Ответ

0 голосов
/ 27 мая 2019

Пожалуйста, попробуйте ниже.

Класс EJB:

class Bean {
    Year year;
    Dosage dosage;
    //getters and setters
}

Класс сервлета:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    StringBuilder json = new StringBuilder();
    String str;
    while ((str = request.getReader().readLine()) != null) {
        json.append(str);
    }

    // Using Jackson
    ObjectMapper objectMapper = new ObjectMapper();
    Bean bean = objectMapper.readValue(json.toString(), Bean.class);

    System.out.println("Year ::" + bean.getYear());
    System.out.println("Dosage ::" + bean.getDosage());
}

файл pom.xml в случае проекта maven, иначе добавьте jar соответственно:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>

PS: игнорируемая обработка исключений в приведенном выше коде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...