如何在Struts 2中检索select标记的值

时间:2014-04-29 07:19:22

标签: java jsp select jdbc struts2

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

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" />

2 个答案:

答案 0 :(得分:1)

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

然后创建一个像

这样的对象
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" />

答案 1 :(得分:0)

代替值(我认为它是select标记的字段值,即您没有澄清的问题),您有一个属性的值,它是一个基本类型{{1} }或int,未初始化,因此包含long值。在Struts中,您可以按名称映射JSP字段,如果未指定0属性来预选默认值,则该值将由value属性检索。 name属性的值是在值堆栈中计算的OGNL表达式name,并返回属性值。此值不会向您显示,但会在empType_em_ty_id change的值时设置,并在您option表单时检索。通常,对于submit标记,需要两个操作属性:一个用于值,另一个用于选项列表。例如

select

JSP

private Integer empType_em_ty_id;
private Map<Integer,String> typeMap = new HashMap<>();
//getters and setters

@Override
public String execute() throws Exception {
  ...
  PreparedStatement ps = con.prepareStatement("select emp_ty_name, em_ty_id  from emptype");
  ResultSet rs = ps.executeQuery();
  while (rs.next()) {
    typeMap.put(
     rs.getInt("em_ty_id"), 
     rs.getString("emp_ty_name")
    );
  }
  //initializing value 
  empType_em_ty_id = typeMap.keySet().iterator().next();
  return SUCCESS;
}

关于所选值:它用于保存对象属性,该属性是从其他对象列表中选择的值。所选对象的键应该是选择值的对象的外键。在我的例子中,我刚刚从同一个集合中获取了一个值,但是仅从另一个对象中获取了值,仅用于演示目的。