C: for: каждый не получает значения, если передать параметр в метод List - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть Java-класс, где у меня есть метод, и этот метод принимает некоторый параметр, такой как

ниже мой код Java, который имеет метод getoutlet

public List<String> getoutlet(String idDB) throws ClassNotFoundException, SQLException {
    List<String> list = new ArrayList<String>();
    con = DBConnection.createConnection();
    statement = con.createStatement();
    String sqlOutlet="select CUSTOMERDESCRIPTOR from ecustomer where CUSTOMERIDENTIFIER in(select CUSTOMERIDENTIFIER from mt_distributrol where mt_distributr_vcdistributrcode = '"+idDB+"')";

    try {

        ResultSet resultSet = statement.executeQuery(sqlOutlet);
        while (resultSet.next()) {
            list.add(resultSet.getString("CUSTOMERDESCRIPTOR"));

        }
    } catch (SQLException e) {
        e.printStackTrace();
    }

    return list;
}

, если я поставлю систему.out.print он дает мне список [jayanagar, malleshwaram, kolar, ol1]

, но выдает ошибку при вызове из пользовательского интерфейса (jsp), используя c: for: each

я передаю idDB в качестве параметра сейчас в списке я получаю вот так

[jayanagar,malleshwaram,kolar,ol1]

теперь я вызываю этот метод с помощью c: for: каждый в моем jsp, чтобы заполнить это в опции выбора, но проблемаэто выдает ошибку

как мой c: for: каждый код

    <jsp:useBean id="obj" class="com.touchpoint.Dao.Outlet" scope="page" />
<select id="all" name="outlet">
                 <option>ALL</option> 
                <c:forEach var="item" items="${obj.outlet}">
                    <option>${item}</option>
                </c:forEach>
            </select> 

, если я не передаю какой-либо параметр в метод getoutlet, то он работает нормально, но теперь я должен передать некоторыепараметр в соответствии с требованием, ошибка, которую он показывает: '$ {obj.outlet}' свойство 'outlet' не найдено для типа com.touchpoint.Dao.Outlet Outlet - это мое имя класса java, так что кто-нибудь тампожалуйста, помогите мне

это мой класс Java

 public class Outlet {
    Connection con = null;
    Statement statement = null;
    ResultSet resultSet = null;

    public List<String> getoutlet(String idDB) throws ClassNotFoundException, SQLException {
        List<String> list = new ArrayList<String>();
        con = DBConnection.createConnection();
        statement = con.createStatement();
//      String sqlOutlet="select CUSTOMERDESCRIPTOR from ecustomer where CUSTOMERIDENTIFIER in(select CUSTOMERIDENTIFIER from mt_distributrol where mt_distributr_vcdistributrcode = '"+idDB+"')";
        String sqlOutlet="select * from ecustomer')";
/*System.out.println(idDB);*/
        try {

            ResultSet resultSet = statement.executeQuery(sqlOutlet);
            while (resultSet.next()) {
                list.add(resultSet.getString("CUSTOMERDESCRIPTOR"));

            }



        } catch (SQLException e) {
            e.printStackTrace();
        }

        return list;
    }



}

он возвращает меня [jayanagar, malleshwaram, kolar], теперь я хочу показать этот список в раскрывающемся списке выбора

1 Ответ

0 голосов
/ 15 ноября 2018

Вот подход (обходной путь).

Класс бинов:

public class MyBean {

    private String paramInfo;

    public void setParamInfo(String p) {
        paramInfo = p;
    }

    public String getParamInfo() {
        return paramInfo;
    }

    public List<String> getStuff(String param) {
        param = paramInfo; // substitute the value here
        List <String> list1 = Arrays.asList("A", "B", "C");
        List<String> list2 = new ArrayList<>();
        list2.addAll(list1);
        list2.add(param); // use the param value here
        return list2;
    }
}


ПРИМЕЧАНИЕ. Я не изменил сигнатуру метода getStuff(String param);это все еще принимает String параметр.Я добавил новое свойство bean, которое заменяет значение параметра.Обратите внимание на использование значения нового свойства компонента paramInfo.


Страница JSP:

<BODY>
    <h2>Testing JSP</h2>
    <jsp:useBean id="obj1" class="app.MyBean" scope="page" />
    <c:set var="param1" value="Z"/>

    <jsp:setProperty name="obj1" property="paramInfo" value="${param1}" />
    <c:set var="list1" value="${obj1.getStuff('')}"/>

    <c:forEach var="item" items="${list1}">
        <br/>ITEM: ${item} 
    </c:forEach>

    <br><br>
    <select name="list">
        <c:forEach items="${list1}" var="item">
            <option value="${item}"><c:out value="${item}" /></option>
        </c:forEach>
    </select>
</BODY>


ПРИМЕЧАНИЕ. Сигнатура метода компонента остается неизменной.Значение, переданное методу, является пустым String.Тег <jsp:setProperty ... фактически устанавливает значение параметра.

Таким образом, вы можете использовать значение параметра в свойстве paramInfo в методе getStuff.


Результат:

ITEM: A 
ITEM: B 
ITEM: C 
ITEM: Z


ПРИМЕЧАНИЕ. Можно изменить метод doStuff в классе бобов, чтобы он не принимал параметр, при таком подходе настройки параметра отдельно.

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