为什么我在<s:select list="">无法显示属性的值,显示的是对象的地址

DepartmentDao.java

package com.service;

import com.entities.Department;

import java.util.List;

public class DepartmentDao extends BaseDao {

public List<Department> getAll() {

String hql = "from Department";

return getSession().createQuery(hql).list();

}

}

DepartmentService.java

package com.service;

import com.entities.Department;

import java.util.List;

public class DepartmentService {

private DepartmentDao departmentDao;

public void setDepartmentDao(DepartmentDao departmentDao) {

this.departmentDao = departmentDao;

}

public List<Department> getAll() {

return departmentDao.getAll();

}

}

action.java

package com.actions;

import com.opensymphony.xwork2.ActionSupport;

import com.service.DepartmentService;

import com.service.EmployeeService;

import org.apache.struts2.interceptor.RequestAware;

import java.io.ByteArrayInputStream;

import java.io.InputStream;

import java.io.UnsupportedEncodingException;

import java.util.Map;

public class EmployeeAction extends ActionSupport implements RequestAware {

private EmployeeService employeeService;

private DepartmentService departmentService;

private InputStream inputStream;

private Map<String, Object> request;

private Integer id;

public InputStream getInputStream() {

return inputStream;

}

public void setDepartmentService(DepartmentService departmentService) {

this.departmentService = departmentService;

}

public void setEmployeeService(EmployeeService employeeService) {

this.employeeService = employeeService;

}

public void setId(Integer id) {

this.id = id;

}

public String list() {

request.put("employee", employeeService.getAll());

return "list";

}

//这里赋值给request了,怎么获取不到实际的内容呢?

public String input() {

request.put("departments", departmentService.getAll());

return "input";

}

public String delete() {

try {

employeeService.delete(id);

inputStream = new ByteArrayInputStream("1".getBytes("UTF-8"));

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

try {

inputStream = new ByteArrayInputStream("0".getBytes("UTF-8"));

} catch (UnsupportedEncodingException e1) {

e1.printStackTrace();

}

}

return "delete";

}

@Override

public void setRequest(Map<String, Object> map) {

this.request = map;

}

}

jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>

<head>

<title>Title</title>

</head>

<body>

<h4>Employee Input info</h4>

<s:debug></s:debug>

<s:form action="emp-save" method="post">

<s:textfield name="lastname" label="lastName"></s:textfield>

<s:textfield name="email" label="Email"></s:textfield>

<s:textfield name="birth" label="Birth"></s:textfield>

<s:textfield name="createtime" label="Createtime"></s:textfield>

<%--这里为什么获取的是地址呢?--%>

<s:select list="#request.departments" listkey="id" listvalue="department.departmentname" label="Department" name="department.id">

</s:select>

<s:submit></s:submit>

</s:form>

<%--这里对比的,这里能够获取value="#request.departments--%>

<table border="1" cellpadding="2" cellspacing="0">

<tr>

<td>ID</td>

<td>DEPARTMENT</td>

</tr>

<s:iterator value="#request.departments">

<tr>

<td>${id}</td>

<td>${departmentname}</td>

</tr>

</s:iterator>

</table>

</body>

</html>

显示:为什么显示的是Deapartment的对象地址呢?这说明listKey和listValue不起作用啊..怎么回事?

图片描述

图片描述

回答:

难道不需要遍历吗?你拿到数据到jsp后是一个list,应该需要<c:foreach> 来进行遍历出每个对象再挨个点属性取值吧?

回答:

我也遇到同样的问题,兄台怎么解决的?

以上是 为什么我在&lt;s:select list=&quot;&quot;&gt;无法显示属性的值,显示的是对象的地址 的全部内容, 来源链接: utcz.com/p/179159.html

回到顶部