发布于 2022-09-02 11:12:55 字数 3809 浏览 9 评论 0

我在action中给request赋了两个值,不知道为何第二个
request.put("departments", departmentService.getAll());无法在jsp中的<s:select list=""> 获取....

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";
    }

    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中一片不正常:
图片描述

但是同样用table又能获取值:

同一个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="departmentname" label="Department">
    </s:select>
    <s:submit></s:submit>

</s:form>

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

显示效果如下:

图片描述

问题,为什么在获取的是这些@的地址,而不是下面输出的内容一样呢?

难道不是这样获取?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

‘画卷フ 2022-09-09 11:12:56

在action中应该有一个获取下拉值的public方法

public List<Department> getDepartmentList(){  
    return departmentService.getAll();  
}

在页面select标签定义如下

<s:select id="department_id" name="department_name" list="departments" listKey="id" listValue="departmentName" value="#request.departmentName">  
</s:select>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文