繁体   English   中英

我正在尝试构建 mongodb springboot crud 程序,我遇到了无法迭代提供的项目等问题

[英]I am trying to build mongodb springboot crud program where i am getting problem like cannot iterate over supplied items

i am creating springboot mongodb crud application where there data is retrieved from the mongodb and shown in the displayPlayers.jsp but when i am doing findById() it is giving problems as this is only availlable in optional(), and cannot be iterated over in前端 jsp 页面。

Below is controller class, displayPlayers.jsp,displaydetails.jsp, CsvServiceImpl.java

Controller class

package com.durlabh.controllers;


 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;

 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;

 import com.durlabh.document.Model;
 import com.durlabh.repositories.ModelRepository;
 import com.durlabh.services.CsvServiceImpl;
 @Controller
 public class MainController {
    @Autowired
    CsvServiceImpl csvFileServices;
    @Autowired
    ModelRepository modelRep;
    
    @RequestMapping("/{id}")
    public String displayDetails( @PathVariable(value="id")String id, ModelMap modelMap){
        Optional<Model> detail =  csvFileServices.getDetailsById(id);
    //  Optional<Model> detail = modelRep.findById(id);
        
   
        modelMap.addAttribute("details", detail);
        System.out.println("yeass");
        return "/WEB-INF/jsps/displayDetails.jsp";
}
    

    @RequestMapping("/players")
    public String displayPlayers(ModelMap modelMap){
        List<Model> mod= csvFileServices.getAll();
        modelMap.addAttribute("mode", mod);
        System.out.println("yes");
        return "/WEB-INF/jsps/displayPlayers.jsp";
}
}

displayDetails.jsp

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page isELIgnored="false" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h2>Players:</h2>
<table>

<c:forEach items="${details}" var="detailss">
<tr>

<td>${detailss.age }</td>
<td>${detailss.height }</td>
<td>${detailss.weight}</td>
<td>${detailss.playedPositions }</td>



</tr>

</c:forEach>
</table>


</body>

</html>

displayPlayers.jsp

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page isELIgnored="false" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h2>Players:</h2>
<table>

<c:forEach items="${mode }" var="modes">
<tr>

<td><a href="id=${modes.id}">${modes.name }</a></td>



</tr>

</c:forEach>
</table>


</body>

</html>

CSVServiceImpl.java

package com.durlabh.services;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.durlabh.document.Model;
import com.durlabh.repositories.ModelRepository;
import com.durlabh.utils.CsvUtil;
import com.opencsv.bean.CsvToBean;
import com.opencsv.bean.CsvToBeanBuilder;
@Service
public class CsvServiceImpl implements CsvService {
    @Autowired
    ModelRepository modelRep;
    public void store(MultipartFile csvfile) {
        
    
            Reader fileReader=null;
            CsvToBean<Model> csvToBean=null;
            List<Model> models=new ArrayList<Model>();
            try (
                Reader reader=new BufferedReader(new InputStreamReader(csvfile.getInputStream()))){
                csvToBean=new CsvToBeanBuilder(reader).withType(Model.class).withIgnoreLeadingWhiteSpace(true).build();
                models= csvToBean.parse();
                modelRep.saveAll(models);
        
        }catch(Exception e) {
            throw new RuntimeException("Fail!->message="+e.getMessage()) ;
        }
        
        
    }
    public List<Model> getAll() {
        return modelRep.findAll();
        
        
    }
    @Override
    public Optional<Model> getDetailsById(String id) {

    Optional<Model> byId = modelRep.findById(id);

  
    System.out.print(byId.get());
    return byId;
    }

    }
    

findById 在 optional() 中可用,不在 List 中,我无法在 displaydetails.jsp 页面中迭代与该 id 相关的项目

此 findById 方法将仅搜索唯一键。 所以它总是只返回一个 object。 您必须定义将查询给定变量和返回列表的其他方法

@Avesh Singh 这是我的 model class

package com.durlabh.document;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import com.opencsv.bean.CsvBindByName;

@Document(collection="bet")
public class Model {
    @Id
    private String id;
    @CsvBindByName
    private Long ranking;
    @CsvBindByName
    private Long seasonid;
    @CsvBindByName
    private String seasonName;
    @CsvBindByName
    private Long tournamentId;
    @CsvBindByName
    private Long tournamentRegionId;
    @CsvBindByName
    private String tournamentRegionCode;
    @CsvBindByName
    private String regionCode;
    @CsvBindByName
    private String tournamentName;
    @CsvBindByName
    private String tournamentShortName;
    @CsvBindByName
    private String firstName;
    @CsvBindByName
    private String lastName;
    
    @CsvBindByName
    private Long  playerId;
    @CsvBindByName
    private boolean isActive;
    @CsvBindByName
    private boolean isOpta;
    @CsvBindByName
    private Long teamId;
    @CsvBindByName
    private String teamName;
    @CsvBindByName
    private String playedPositions;
    @CsvBindByName
    private Long age;
    @CsvBindByName
    private Long height;
    @CsvBindByName
    private Long weight;
    @CsvBindByName
    private String positionText;
    @CsvBindByName
    private Long apps;
    @CsvBindByName
    private Long subOn;
    @CsvBindByName
    private Long minsPlayed;
    @CsvBindByName
    private double rating;
    @CsvBindByName
    private Long goal;
    @CsvBindByName
    private Long assistTotal;
    @CsvBindByName
    private  Long yellowCard;
    @CsvBindByName
    private Long redCard;
    @CsvBindByName
    private double shotsPerGame;
    @CsvBindByName
    private double serialWonPerGame;
    @CsvBindByName
    private Long manOfTheMatch;
    @CsvBindByName
    private String name;
    @CsvBindByName
    private boolean isManOfTheMatch;
    @CsvBindByName
    private String playedPostionsShort;
    @CsvBindByName
    private double passSuccess;
    public Model() {
        
    }
    public Model(String id,Long ranking, Long seasonid, String seasonName, Long tournamentId, Long tournamentRegionId,
            String tournamentRegionCode, String regionCode, String tournamentName, String tournamentShortName,
            String firstName, String lastName, Long playerId, boolean isActive, boolean isOpta, Long teamId,
            String teamName, String playedPositions, Long age, Long height, Long weight, String positionText, Long apps,
            Long subOn, Long minsPlayed, double rating, Long goal, Long assistTotal, Long yellowCard, Long redCard,
            double shotsPerGame, double serialWonPerGame, Long manOfTheMatch, String name, boolean isManOfTheMatch,
            String playedPostionsShort, double passSuccess) {
        super();
        this.id=id;
        this.ranking = ranking;
        this.seasonid = seasonid;
        this.seasonName = seasonName;
        this.tournamentId = tournamentId;
        this.tournamentRegionId = tournamentRegionId;
        this.tournamentRegionCode = tournamentRegionCode;
        this.regionCode = regionCode;
        this.tournamentName = tournamentName;
        this.tournamentShortName = tournamentShortName;
        this.firstName = firstName;
        this.lastName = lastName;
        this.playerId = playerId;
        this.isActive = isActive;
        this.isOpta = isOpta;
        this.teamId = teamId;
        this.teamName = teamName;
        this.playedPositions = playedPositions;
        this.age = age;
        this.height = height;
        this.weight = weight;
        this.positionText = positionText;
        this.apps = apps;
        this.subOn = subOn;
        this.minsPlayed = minsPlayed;
        this.rating = rating;
        this.goal = goal;
        this.assistTotal = assistTotal;
        this.yellowCard = yellowCard;
        this.redCard = redCard;
        this.shotsPerGame = shotsPerGame;
        this.serialWonPerGame = serialWonPerGame;
        this.manOfTheMatch = manOfTheMatch;
        this.name = name;
        this.isManOfTheMatch = isManOfTheMatch;
        this.playedPostionsShort = playedPostionsShort;
        this.passSuccess = passSuccess;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public Long getRanking() {
        return ranking;
    }
    public void setRanking(Long ranking) {
        this.ranking = ranking;
    }
    public Long getSeasonid() {
        return seasonid;
    }
    public void setSeasonid(Long seasonid) {
        this.seasonid = seasonid;
    }
    public String getSeasonName() {
        return seasonName;
    }
    public void setSeasonName(String seasonName) {
        this.seasonName = seasonName;
    }
    public Long getTournamentId() {
        return tournamentId;
    }
    public void setTournamentId(Long tournamentId) {
        this.tournamentId = tournamentId;
    }
    public Long getTournamentRegionId() {
        return tournamentRegionId;
    }
    public void setTournamentRegionId(Long tournamentRegionId) {
        this.tournamentRegionId = tournamentRegionId;
    }
    public String getTournamentRegionCode() {
        return tournamentRegionCode;
    }
    public void setTournamentRegionCode(String tournamentRegionCode) {
        this.tournamentRegionCode = tournamentRegionCode;
    }
    public String getRegionCode() {
        return regionCode;
    }
    public void setRegionCode(String regionCode) {
        this.regionCode = regionCode;
    }
    public String getTournamentName() {
        return tournamentName;
    }
    public void setTournamentName(String tournamentName) {
        this.tournamentName = tournamentName;
    }
    public String getTournamentShortName() {
        return tournamentShortName;
    }
    public void setTournamentShortName(String tournamentShortName) {
        this.tournamentShortName = tournamentShortName;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public Long getPlayerId() {
        return playerId;
    }
    public void setPlayerId(Long playerId) {
        this.playerId = playerId;
    }
    public boolean isActive() {
        return isActive;
    }
    public void setActive(boolean isActive) {
        this.isActive = isActive;
    }
    public boolean isOpta() {
        return isOpta;
    }
    public void setOpta(boolean isOpta) {
        this.isOpta = isOpta;
    }
    public Long getTeamId() {
        return teamId;
    }
    public void setTeamId(Long teamId) {
        this.teamId = teamId;
    }
    public String getTeamName() {
        return teamName;
    }
    public void setTeamName(String teamName) {
        this.teamName = teamName;
    }
    public String getPlayedPositions() {
        return playedPositions;
    }
    public void setPlayedPositions(String playedPositions) {
        this.playedPositions = playedPositions;
    }
    public Long getAge() {
        return age;
    }
    public void setAge(Long age) {
        this.age = age;
    }
    public Long getHeight() {
        return height;
    }
    public void setHeight(Long height) {
        this.height = height;
    }
    public Long getWeight() {
        return weight;
    }
    public void setWeight(Long weight) {
        this.weight = weight;
    }
    public String getPositionText() {
        return positionText;
    }
    public void setPositionText(String positionText) {
        this.positionText = positionText;
    }
    public Long getApps() {
        return apps;
    }
    public void setApps(Long apps) {
        this.apps = apps;
    }
    public Long getSubOn() {
        return subOn;
    }
    public void setSubOn(Long subOn) {
        this.subOn = subOn;
    }
    public Long getMinsPlayed() {
        return minsPlayed;
    }
    public void setMinsPlayed(Long minsPlayed) {
        this.minsPlayed = minsPlayed;
    }
    public double getRating() {
        return rating;
    }
    public void setRating(double rating) {
        this.rating = rating;
    }
    public Long getGoal() {
        return goal;
    }
    public void setGoal(Long goal) {
        this.goal = goal;
    }
    public Long getAssistTotal() {
        return assistTotal;
    }
    public void setAssistTotal(Long assistTotal) {
        this.assistTotal = assistTotal;
    }
    public Long getYellowCard() {
        return yellowCard;
    }
    public void setYellowCard(Long yellowCard) {
        this.yellowCard = yellowCard;
    }
    public Long getRedCard() {
        return redCard;
    }
    public void setRedCard(Long redCard) {
        this.redCard = redCard;
    }
    public double getShotsPerGame() {
        return shotsPerGame;
    }
    public void setShotsPerGame(double shotsPerGame) {
        this.shotsPerGame = shotsPerGame;
    }
    public double getSerialWonPerGame() {
        return serialWonPerGame;
    }
    public void setSerialWonPerGame(double serialWonPerGame) {
        this.serialWonPerGame = serialWonPerGame;
    }
    public Long getManOfTheMatch() {
        return manOfTheMatch;
    }
    public void setManOfTheMatch(Long manOfTheMatch) {
        this.manOfTheMatch = manOfTheMatch;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public boolean isManOfTheMatch() {
        return isManOfTheMatch;
    }
    public void setManOfTheMatch(boolean isManOfTheMatch) {
        this.isManOfTheMatch = isManOfTheMatch;
    }
    public String getPlayedPostionsShort() {
        return playedPostionsShort;
    }
    public void setPlayedPostionsShort(String playedPostionsShort) {
        this.playedPostionsShort = playedPostionsShort;
    }
    public double getPassSuccess() {
        return passSuccess;
    }
    public void setPassSuccess(double passSuccess) {
        this.passSuccess = passSuccess;
    }
    @Override
    public String toString() {
        return "Model [id=" + id + ", ranking=" + ranking + ", seasonid=" + seasonid + ", seasonName=" + seasonName
                + ", tournamentId=" + tournamentId + ", tournamentRegionId=" + tournamentRegionId
                + ", tournamentRegionCode=" + tournamentRegionCode + ", regionCode=" + regionCode + ", tournamentName="
                + tournamentName + ", tournamentShortName=" + tournamentShortName + ", firstName=" + firstName
                + ", lastName=" + lastName + ", playerId=" + playerId + ", isActive=" + isActive + ", isOpta=" + isOpta
                + ", teamId=" + teamId + ", teamName=" + teamName + ", playedPositions=" + playedPositions + ", age="
                + age + ", height=" + height + ", weight=" + weight + ", positionText=" + positionText + ", apps="
                + apps + ", subOn=" + subOn + ", minsPlayed=" + minsPlayed + ", rating=" + rating + ", goal=" + goal
                + ", assistTotal=" + assistTotal + ", yellowCard=" + yellowCard + ", redCard=" + redCard
                + ", shotsPerGame=" + shotsPerGame + ", serialWonPerGame=" + serialWonPerGame + ", manOfTheMatch="
                + manOfTheMatch + ", name=" + name + ", isManOfTheMatch=" + isManOfTheMatch + ", playedPostionsShort="
                + playedPostionsShort + ", passSuccess=" + passSuccess + "]";
    }
    

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM