Заполните selectManyListbox элементами из базы данных - PullRequest
1 голос
/ 07 марта 2012

В настоящее время я пытаюсь просмотреть симптомы в таблице и показать их в selectManyListbox, хотя список не появляется при компиляции и запуске.

index.html говорит, что sym.symptomList и sym. Симптомом являются неизвестные свойства

index.html

<h:selectManyListbox id ="list1" value="#{sym.symptomList}">
    <f:selectItems value="#{sym.Symptom}" var="c"
        itemLabel="#{c.symptomName}" itemValue="#{c.symptomId}"/>
</h:selectManyListbox>

Бин:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.util.*;
import java.sql.*;

@ManagedBean(name="sym")
@SessionScoped
public class SymptomBean{

Connection con;
Statement ps;
ResultSet rs;
private List symptomList = new ArrayList(); 

public List getAllSym() {
int i = 0;
try
{
    Class.forName("com.mysql.jdbc.Driver");
    con = DriverManager.getConnection(...) //ommitted details
    ps = con.createStatement();
    rs = ps.executeQuery("select * from symptoms");
    while (rs.next()) {
        symptomList.add(i, new Symptom(rs.getString(1), rs.getString(2)));
        i++;
        }
}

catch (Exception e)
{
    System.out.println("Error Data : " + e.getMessage());
}

return symptomList;
}

public class Symptom{
public String symptomId;
public String symptomName;

    public Symptom(String symptomId, String symptomName){
    this.symptomId = symptomId;
    this.symptomName = symptomName;
    }

public String getSymptomId(){
    return symptomId;
    }

public String getSymptomName(){
    return symptomName;
    }
}      

}

1 Ответ

1 голос
/ 08 марта 2012

Он говорит, что sym.symptomList - неизвестное свойство, поскольку у вас нет общедоступного метода получения и установки для него, а sym.Symptom вообще не существует. *

Создайте общедоступный метод получения и установки для sympomList и не устанавливайте значение syptomList в вашем методе getAllSym (). Примерно так:

private List symptomList;

public List getSymptomList() {return symptomList;}
public void setSymptomList(List symptomList) {this.symptomList=symptomList;}

public List getAllSym() {
     List allSymptoms = new ArrayList(); 
     //DB lookup logic...
     while (rs.next()) {
         allSymptoms.add(new Symptom(rs.getString(1), rs.getString(2)));        
     }

     //Close connections, error handling, etc...

     return allSymptoms;
}

И тогда ваш .xhtml будет:

<h:selectManyListbox id ="list1" value="#{sym.symptomList}">
  <f:selectItems value="#{sym.allSym}" var="c"
     itemLabel="#{c.symptomName}" itemValue="#{c.symptomId}"/>
</h:selectManyListbox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...