Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring MVC中显示控制器的视图(所有员工的列表)_Java_Spring_Spring Mvc_Model View Controller_Freemarker - Fatal编程技术网

Java 在Spring MVC中显示控制器的视图(所有员工的列表)

Java 在Spring MVC中显示控制器的视图(所有员工的列表),java,spring,spring-mvc,model-view-controller,freemarker,Java,Spring,Spring Mvc,Model View Controller,Freemarker,试图在Spring中从控制器简单地输出视图报告中所有员工的列表。获取与Freemarker相关的错误,不确定如何解决 相关类别: Employee.java模型 package mvc_course.models; import java.util.HashSet; import java.util.Set; public class Employee { int employee_number; String employee_name; String address; String n

试图在Spring中从控制器简单地输出视图报告中所有员工的列表。获取与Freemarker相关的错误,不确定如何解决

相关类别:

Employee.java模型

package mvc_course.models;

import java.util.HashSet;
import java.util.Set;

public class Employee {

int employee_number;
String employee_name;
String address;
String ni_number;
String iban_number;
double starting_salary;
int employee_type_id;
int commission_rate;
int total_sales;

public static Set<Employee> employeeList = new HashSet<Employee>();

public Employee(String name, String address, String nin, String iban, double salary) {
    this.employee_name = name;
    this.address = address;
    this.ni_number = nin;
    this.iban_number = iban;
    this.starting_salary = salary;
}

public int getEmployee_number() {
    return employee_number;
}

public void setEmployee_number(int employee_number) {
    this.employee_number = employee_number;
}

public String getEmployee_name() {
    return employee_name;
}

public void setEmployee_name(String employee_name) {
    this.employee_name = employee_name;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

public String getNi_number() {
    return ni_number;
}

public void setNi_number(String ni_number) {
    this.ni_number = ni_number;
}

public String getIban_number() {
    return iban_number;
}

public void setIban_number(String iban_number) {
    this.iban_number = iban_number;
}

public double getStarting_salary() {
    return starting_salary;
}

public void setStarting_salary(double starting_salary) {
    this.starting_salary = starting_salary;
}

public int getEmployee_type_id() {
    return employee_type_id;
}

public void setEmployee_type_id(int employee_type_id) {
    this.employee_type_id = employee_type_id;
}

public int getCommission_rate() {
    return commission_rate;
}

public void setCommission_rate(int commission_rate) {
    this.commission_rate = commission_rate;
}

public int getTotal_sales() {
    return total_sales;
}

public void setTotal_sales(int total_sales) {
    this.total_sales = total_sales;
}

}
包mvc\u课程模型;
导入java.util.HashSet;
导入java.util.Set;
公营雇员{
国际雇员联合会编号;
员工姓名字符串;
字符串地址;
字符串ni_数;
字符串iban_编号;
双倍起薪;
int雇员类型标识;
国际佣金率;
国际总销售额;
public static Set employeeList=new HashSet();
公共雇员(字符串名称、字符串地址、字符串nin、字符串iban、双薪){
this.employee_name=姓名;
this.address=地址;
这个.ni_数=nin;
此.iban_编号=iban;
这个。起薪=工资;
}
public int getEmployee_number(){
返回员工编号;
}
公共作废设置员工编号(内部员工编号){
this.employee\u number=employee\u number;
}
公共字符串getEmployee_name(){
返回员工姓名;
}
public void setEmployee_name(字符串employee_name){
this.employee\u name=employee\u name;
}
公共字符串getAddress(){
回信地址;
}
公共无效设置地址(字符串地址){
this.address=地址;
}
公共字符串getNi_number(){
返回ni_数;
}
公共无效设置序号(字符串序号){
this.ni_数=ni_数;
}
公共字符串getIban_number(){
返回iban_编号;
}
公共无效设置iban_编号(字符串iban_编号){
this.iban_编号=iban_编号;
}
公共双薪{
返回起始工资;
}
公共无效设置起始工资(双倍起始工资){
这个。起薪=起薪;
}
public int getEmployee_type_id(){
返回员工类型标识;
}
public void setEmployee_type_id(int employee_type_id){
this.employee\u type\u id=employee\u type\u id;
}
公共收入佣金率(){
退货佣金率;
}
公共佣金率(国际佣金率){
该佣金率=佣金率;
}
公共int getTotal_销售额(){
返回总销售额;
}
公共无效设置总销售额(总销售额){
this.total_sales=总销售额;
}
}
ReportController.java

    package mvc_course.controllers;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import mvc_course.models.Employee;

@Controller
public class ReportController {

    @Autowired
    private DataSource dataSource;

    @RequestMapping(value="showEmployees.mvc")
    public String showEmployees(Model m){

        List<Employee> employees = new ArrayList<Employee>();

        try{
            Connection c = dataSource.getConnection();
            Statement s = c.createStatement();
            String sql = "SELECT * FROM Employees";
            ResultSet rs = s.executeQuery(sql);

            List<String[]>rows = new ArrayList<String[]>();

            while(rs.next()){

            String[] row = {
                        rs.getString(1),
                        rs.getString(2),
                        rs.getString(3),
                        rs.getString(4),
                        rs.getString(5),
                        rs.getString(6)};
                rows.add(row);
                }

            for (String[] row : rows) {
                Employee e = new Employee(row[1], row[2], row[3], row[4], Double.parseDouble(row[5]));
                employees.add(e);
                System.out.println();
                for (String string : row) {
                    System.out.print(string + " ");
                }
            }

            m.addAttribute("employees");


        }catch (Exception e){
            System.out.println(e.getMessage());
        }


        return "EmployeesPerBuReport";

    }

}


**EmployeeReport.ftl**

    <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Employees per BU</title>

<!-- Compiled and minified CSS -->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.7/css/materialize.min.css">

  <!-- Compiled and minified JavaScript -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.7/js/materialize.min.js"></script>


</head>
<body>

<h1>Employees</h1>
<table>
<thead>
<tr>
    <th>Name</th>
    <th>Address</th>
    <th>National Insurance Number</th>
    <th>Bank Account Number</th>
    <th>Starting Salary</th>
</tr>
</thead>
<tbody>
<#list employees as employee>
            <tr>
                <td>${employee.getName}</td>
                <td>${employee.getAddress}</td>
                <td>${employee.getNi_number}</td>
                <td>${employee.getIban_number}</td>
                <td>${employee.getStarting_salary}</td>
            </tr>
        </#list>
</tbody>
</table>
</body>

</body>
</html>
包mvc\u课程控制器;
导入java.sql.Connection;
导入java.sql.ResultSet;
导入java.sql.Statement;
导入java.util.ArrayList;
导入java.util.List;
导入javax.sql.DataSource;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Controller;
导入org.springframework.ui.Model;
导入org.springframework.web.bind.annotation.RequestMapping;
导入mvc_course.models.Employee;
@控制器
公共类报表控制器{
@自动连线
私有数据源;
@RequestMapping(value=“showEmployees.mvc”)
公共字符串(m型){
List employees=new ArrayList();
试一试{
连接c=dataSource.getConnection();
语句s=c.createStatement();
String sql=“从员工中选择*”;
结果集rs=s.executeQuery(sql);
Listrows=newarraylist();
while(rs.next()){
字符串[]行={
rs.getString(1),
rs.getString(2),
rs.getString(3),
rs.getString(4),
rs.getString(5),
rs.getString(6)};
行。添加(行);
}
for(字符串[]行:行){
Employee e=新员工(第[1]行、第[2]行、第[3]行、第[4]行、Double.parseDouble(第[5]行));
增加(e);
System.out.println();
for(字符串:行){
系统输出打印(字符串+“”);
}
}
m、 addAttribute(“员工”);
}捕获(例外e){
System.out.println(e.getMessage());
}
返回“EmployeesPerBuReport”;
}
}
**EmployeeReport.ftl**
每个BU的员工数
员工
名称
地址
国民保险号码
银行帐号
起薪
${employee.getName}
${employee.getAddress}
${employee.getNi_number}
${employee.getIban_number}
${employee.getStarting_salary}
错误:

FreeMarker模板错误(调试模式;在生产环境中使用RETHROW!): 以下内容的计算结果为null或缺失:==>employee.getName [在第31行第39列的模板“EmployeesPerBuReport.ftl”中]---- 提示:导致此错误的是最后一个点之后的步骤,而不是 在它之前的那些提示:如果已知失败的表达式为 法律上指的是有时无效或缺失的东西 指定一个默认值,如myOptionalVar!myDefault,或在出现时使用缺少时使用。(这些只包括 表达式的最后一步;要覆盖整个表达式,请使用 括号:(myOptionalVar.foo)!myDefault,(myOptionalVar.foo)---- ----FTL堆栈跟踪(“~”表示与嵌套相关):-在以下位置失败:${employee.getName}[在模板“EmployeesPerBuReport.FTL”的第行 第31栏,第37栏


简单输入:
m.addAttribute(“employees”,employees);
简单输入:
m.addAttribute(“employees,employees”);
employees
类中没有
getName()
方法,只有
getemployeen\u name()
(一个非常奇怪的名字)。修复后,您将得到一个不同的错误,如果您编写
${employee.name}
而不是
${employee.getName}

您在
employee
类中没有
getName()
方法,则可以修复该错误,您只有
getEmployee\u name()
(一个非常奇怪的名称)
<#list employees as employee>
        <tr>
            <td>${employee.getName}</td>
            <td>${employee.getAddress}</td>
            <td>${employee.getNi_number}</td>
            <td>${employee.getIban_number}</td>
            <td>${employee.getStarting_salary}</td>
        </tr>
    </#list>
<#list employees as e>
        <tr>
            <td>${e.name}</td>
            <td>${e.address}</td>
            <td>${e.ni_number}</td>
            <td>${e.iban_number}</td>
            <td>${e.starting_salary}</td>
        </tr>
    </#list>