我正在使用Struts select标记从数据库中检索值,显示在JSP页面上的表单中,我使用以下代码将值存储在列表对象中

ps = con.prepareStatement("select emp_ty_name, em_ty_id  from emptype");
set = ps.executeQuery();
while (set.next()) {
    typeID.add(set.getInt("em_ty_id"));
    typeName.add(set.getString("emp_ty_name"));
}


在JSP页面中,我正确显示了名称,但在其值处显示了0(零)


<s:select label="Employee Type" list="typeName" name="empType_em_ty_id" />

最佳答案

您需要使用具有两个属性的对象的列表,而不是两个单独的列表。

然后创建一个像

public class EmpType {
    private Integer typeID;
    private String  typeName;
    // getters and setters
}


在您的操作中声明它的列表,然后填充它:

private List<EmpType> empTypes = new ArrayList<EmpType>();
// getters and setters

public String execute(){
    // stuff...

    while (set.next()) {
        EmpType et = new EmpType();
        et.setTypeID(set.getInt("em_ty_id"));
        et.setTypeName(set.getString("emp_ty_name"));
        empTypes.add(et);
    }

    // stuff

    return SUCCESS;
}


迭代对象并使用listKeylistValue属性指定键和值:

<s:select label = "Employee Type"
           list = "empTypes"
        listKey = "typeID"
      listValue = "typeName"
           name = "empType_em_ty_id" />

10-06 01:02