吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1628|回复: 14
收起左侧

[已解决] Struts2求助

[复制链接]
ElasticForce 发表于 2019-11-24 14:06
本帖最后由 ElasticForce 于 2019-11-27 19:12 编辑

最近在做hibernate+struts的实验作业
但是我的数据库信息不能在网页上显示出来

但是我通过测试类调用action类中的测试方法又能在控制台显示

下面是部分代码,想请大佬看看我哪里出了问题
Action类
package com.elastic.action;

import java.util.List;

import com.elastic.dao.EmpDao;
import com.elastic.entity.Emp;

public class EmpAction {
        private EmpDao empDao = new EmpDao();
        private Emp emp ;
        private List<Emp> emplist;
        
        public EmpDao getEmpDao() {
                return empDao;
        }
        public void setEmpDao(EmpDao empDao) {
                this.empDao = empDao;
        }
        public Emp getEmp() {
                return emp;
        }
        public void setEmp(Emp emp) {
                this.emp = emp;
        }
        public List<Emp> getList() {
                return emplist;
        }
        public void setList(List<Emp> list) {
                this.emplist = list;
        }
        
        /*
         * 列表显示
         */
        public String ShowList() {
                emplist = empDao.listEmp();
                return "showlist";
        }
        
        /*
         * 测试方法
         */
        public List<Emp> testList() {
                emplist = empDao.listEmp();
                return emplist;
        }
}

Struts.xml
<struts>
        <constant name="struts.i18n.encoding" value="UTF-8"></constant>
        
        <package name="empinfo" extends="struts-default" namespace="/">
        
                <!-- 显示 -->
                <action name="index" class="com.elastic.action.EmpAction" method="ShowList">
                        <result name="showlist">index.jsp</result>
                </action>

        </package>
</struts>

index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<%@ taglib prefix="s" uri="/struts-tags"%>
<title>首页</title>
</head>
<body>
<table border="1" align="center">
        <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>工资</th>
                <th colspan="2">更新<th>
        </tr>
        
        <!-- 我怀疑是这里出了问题 -->
        <s:iterator value="emplist" var="emp">
                <tr>
                        <td>${emp.empid}</td>
                        <td>${emp.name}</td>
                        <td>${emp.salary}</td>
                        <td><a href="detail?emp.empid=${emp.empid}">修改</a></td>
                        <td><a href="delete?emp.empid=${emp.empid}">删除</a></td>
                </tr>
        </s:iterator>
        
        <!-- 添加 -->
        <tr>
        <td colspan="5" align="center"><a href="add.jsp">添加</a></td>
        </tr>
</table>
</body>
</html>
1.png
2.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

空心人i 发表于 2019-11-24 14:15
本帖最后由 空心人i 于 2019-11-24 14:24 编辑

试试看
<s:iterator value="#emplist" var="emp">
                <tr>
                        <td>#emp.empid</td>
                        <td>#emp.name</td>
                        <td>#emp.salary</td>
                        <td><a href="detail?emp.empid=#emp.empid">修改</a></td>
                        <td><a href="delete?emp.empid=#emp.empid">删除</a></td>
                </tr>
        </s:iterator>
我正常使用forEach
<s:forEach items="${emplist}" var="emp">
                <tr>
                        <td>${emp.empid}</td>
                        <td>${emp.name}</td>
                        <td>${emp.salary}</td>
                        <td><a href="detail?emp.empid=${emp.empid}">修改</a></td>
                        <td><a href="delete?emp.empid=${emp.empid}">删除</a></td>
                </tr>
        </s:forEach>

羊毛丶 发表于 2019-11-24 14:19
由于iteratorstatus对象并不是ognl的根对象,因此访问需要加上#访问,如下例子:
[HTML] 纯文本查看 复制代码
<s:iterator value=”{’dd’,'bb’,'cc’}” status=”st”>

<s:if test=”#st.odd”>

<s:property value=”#st.index”/>

</s:if>

</s:iterator>


百度的
 楼主| ElasticForce 发表于 2019-11-24 14:53
zuijianren 发表于 2019-11-24 15:18
你用struts2的debug标签看一下数据有没有进来呗,可能你网页写的重定向,没有把数据带到该页面
hestyle 发表于 2019-11-24 15:41
你应该发一下com.elastic.action.EmpAction类的ShowList方法,看看你的是否往request域塞了emplist对象。
在jsp取request域中的数据可以使用ognl、el表达式(如一楼所说的#与$的区别),先要看看有没有正确的塞对象给前端啊
 楼主| ElasticForce 发表于 2019-11-24 15:44
zuijianren 发表于 2019-11-24 15:18
你用struts2的debug标签看一下数据有没有进来呗,可能你网页写的重定向,没有把数据带到该页面

我写了debug标签,但是页面不显示debug
然后我在控制台发现了一个报错
java.lang.UnsupportedClassVersionError: com/elastic/action/StudentAction has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class com.elastic.action.StudentAction)
又感觉好像是这个的问题
 楼主| ElasticForce 发表于 2019-11-24 15:55
hestyle 发表于 2019-11-24 15:41
你应该发一下com.elastic.action.EmpAction类的ShowList方法,看看你的是否往request域塞了emplist对象。
...

我发了ShowList方法的
        public String ShowList() {
                emplist = empDao.listEmp();
                return "showlist";
        }
hestyle 发表于 2019-11-24 16:53
本帖最后由 hestyle 于 2019-11-24 16:58 编辑
ElasticForce 发表于 2019-11-24 15:55
我发了ShowList方法的
        public String ShowList() {
                emplist = empDao.listEmp ...

好吧,没注意到你发了这个类,捂脸/捂脸/
你在返回return "showlist"去调用index前,没有将emplist这个对象塞给jsp的request请求域啊
Struts2框架之在动作类中访问Servlet API
https://blog.csdn.net/qq_41855420/article/details/102648782

在ShowList方法中获取request,然后把emplist塞给request域,再在index.jsp使用一楼的ognl或者el表达式读取request域中的emplist对象
hestyle 发表于 2019-11-24 17:08
hestyle 发表于 2019-11-24 16:53
好吧,没注意到你发了这个类,捂脸/捂脸/
你在返回return "showlist"去调用index前,没有将emplist这个 ...

servlet一般使用request存数据给前端jsp,在Struts2框架中,一般把数据放在ContextMap

Struts2框架之ContextMap(ActionContext、ValueStack)
https://blog.csdn.net/qq_41855420/article/details/102759820
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 00:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表