我有一个Java类,其中有一个方法,该方法带有一些参数,例如
下面是我的具有getoutlet方法的Java代码
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;
}
如果我放入system.out.print,它会给我列出[jayanagar,malleshwaram,kolar,ol1]
但是在使用c:for:each
从UI(jsp)调用时会抛出错误我正在将idDB作为参数传递 现在在列表中,我变得像这样
[jayanagar,malleshwaram,kolar,ol1]
现在我通过c:for:each在我的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] 现在我想在我的选择选项下拉列表中显示此列表
答案 0 :(得分:0)
这是一种方法(解决方法)。
Bean类:
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属性,它可以代替参数值。请注意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>
注意:该bean的方法签名仍然保持不变。传递给该方法的值为空白String
。标签<jsp:setProperty ...
实际上是设置参数值。
通过这种方式,您可以在paramInfo
方法的getStuff
属性中使用参数值。
结果:
ITEM: A
ITEM: B
ITEM: C
ITEM: Z
注意:使用这种分别设置参数的方法,可以更改Bean类中的doStuff
方法以不接受参数。