2015-05-24 1 views
0

Я пытаюсь получить параметр из выпадающего меню, находящегося в файле jsp, на мою вспомогательную функцию, которая находится в файле java. Я проверяю, нажимает ли пользователь кнопку, а затем я хочу взять параметр «rows». Это то, что выпадающее меню выглядит ...Как получить параметры с jsp-страницы на java-вспомогательную функцию

<div class="panel panel-default"> 
    <div class="panel-body"> 
     <div class="bottom-nav"> 
      <h4> Options </h4> 
      <form action="AnalysisHelper.java"> 
        <div> 
       Rows: 
        <select name="rows"> 
         <option value="users">users</option> 
         <option value="states">states</option> 
        </select> 
       </div> 

        <div> 
        <input type="submit" value="Next 20 Users" name="nextUsers"> 
        <input type="submit" value="Next 10 products" name="nextProd"> 
        <input type="submit" value="RUN QUERY!" name="run"> 
       </div> 

и это моя вспомогательная функция:

package helpers; 

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 

import javax.servlet.http.HttpServletRequest; 

public class AnalysisHelper { 

    public static List<AnalysisWithCategories> listAnalysis() { 

     Connection conn = null; 
     Statement stmt = null; 
     ResultSet rs = null; 

     // list object holding data 
     List<AnalysisWithCategories> analysis = new ArrayList<AnalysisWithCategories>(); 

     try { 
      try { 

       // connect to DB 
       conn = HelperUtils.connect(); 

      } catch (Exception e) { 

       // error 
       System.err.println("Internal Server Error. This shouldn't happen."); 
       return new ArrayList<AnalysisWithCategories>(); 
      } 

      // get all the products 
      stmt = conn.createStatement(); 

         // check if user wants to filter results 
      String runQuery = request.getParameter("run"); 
      if() 

      // might need indexes on userandstates(u_id), userandproductsales(u_id), userandproductsales(p_id), product(p_id) 
      rs = stmt.executeQuery("SELECT s.p_name, s.p_id, s.u_name, s.u_id, s.s_price, s.quantity, s.name, s.c_name, u.u_totalSales, p.p_totalSales" 
        + " FROM userAndProductSales s" 
        + " left outer join usersandstates u on u.u_id = s.u_id" 
        + " join product p on p.p_id = s.p_id" 
        + " ORDER BY u_name, p_name LIMIT 20"); 

Я попытался request.getParameter("run") и request.getParameter("rows"), но я получаю ошибку о том, что «запрос не разрешено ". Как сопоставить запрос с моим файлом jsp? Или, если есть другой способ получить параметр, не могли бы вы показать мне.

+0

Вспомогательная функция? Вы имеете в виду сервлет? Можете ли вы опубликовать код Java и стек? –

+0

Нет, я имею в виду вспомогательную функцию из java-файла. Я опубликую его в своем вопросе –

+0

Как вы это называете? Из сервлета? Очевидно, что 'запрос' не определен. Вы хотите пройти мимо объекта 'request'? –

ответ

0

Это больше, чем архитектурная проблема.

Что вы должны помнить, так это то, что JSP скомпилирован в HTML и отправляется клиенту - как только там (или после завершения компиляции), он понятия не имеет, что происходит на сервере. Это уже не JSP и ничего не знает о Java.

Если вы хотите вызвать функцию на сервере, вам нужно выставить функцию (сервлет, REST и т. Д.) И вызвать ее через Javascript на клиенте. Клиент не знает (и не должен) знать внутренности вашего сервера - даже если вы, как программист, знаете.

В частности, чтобы запрашивать не решен:

Вам нужно написать функцию, которая будет получить в качестве одного из параметров HTTPRequest, который впрыскивается в рамках сети связи (JEE, Spring, другой сервлет) - на котором вы можете запросить параметры, которые вы передаете от клиента (!). Это не происходит по волшебству. :-)

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