当前位置: 首页 > 知识库问答 >
问题:

当我尝试更新表的成员时出错

璩浩广
2023-03-14

这是我的ProdottoController:

package it.catalogo.controller;

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.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import it.catalogo.model.Prodotto;
import it.catalogo.repository.ProdottoRepository;

@Controller
@RequestMapping("/prodotto")
public class ProdottoController {

    @Autowired
    private ProdottoRepository repo;
    
    @GetMapping("/lista")
    public ModelAndView list( @RequestParam(name = "id", required = false) String idProdotto, ModelMap mm) {        


        if(idProdotto!=null) {
            Optional<Prodotto> p =  repo.findById(Integer.parseInt(idProdotto));
            mm.addAttribute("prodottoDaModificare",p);
        }
        
        return new ModelAndView("prodotti", "listaProdotti", repo.findAll());
    }
    
    @PostMapping("/add")
    public String add(@ModelAttribute("datiProdotto") Prodotto p) {
        
        repo.save(p);
        return "redirect:/prodotto/lista";
    }
    
    @PostMapping("/update")
    public String update(@ModelAttribute("datiProdotto") Prodotto p) {
        
        repo.save(p);
        return "redirect:/prodotto/lista";
    }
    
    @GetMapping("/delete")
    public String delete(@RequestParam("id") String id) {

        repo.deleteById(Integer.parseInt(id));
        
        return "redirect:/prodotto/lista";
    }
}

Prodotto实体:

package it.catalogo.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Prodotto {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    
    @Column(name = "nome")
    private String nome;
    
    @Column(name = "descrizione")
    private String descrizione;

    @Column(name = "prezzo")
    private Integer prezzo;
    
    
    
    public Prodotto(String nome, String descrizione, Integer prezzo) {
        super();
        this.nome = nome;
        this.descrizione = descrizione;
        this.prezzo = prezzo;
    }
    public Prodotto() {
        super();
    }
    
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getDescrizione() {
        return descrizione;
    }
    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }
    public Integer getPrezzo() {
        return prezzo;
    }
    public void setPrezzo(Integer prezzo) {
        this.prezzo = prezzo;
    }
    
    
    
    
}

这是视图(Freemarker):

<!DOCTYPE html>
<html>
    <head>
        <title>Catalogo prodotti</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
        <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
        
    </head>

    <body>
        <h1>Catalogo prodotti</h1>
        
        <#if prodottoDaModificare?? >
        <h2>Modifica del prodotto - ${prodottoDaModificare.nome}</h2>
        <div style="margin: 20px">
            <form method="POST"  action="update" id="datiProdotto">
                <input type="hidden" name="id" value="${prodottoDaModificare.id}"/>
                <div>
                    <label for="nome">Nome</label>
                    <input type="text" name="nome" value="${prodottoDaModificare.nome}" id="nome">
                </div>
                <div>
                    <label for="descrizione">Descrizione</label>
                    <input type="text" name="descrizione" value="${prodottoDaModificare.descrizione}" id="descrizione">
                </div>
                <div>
                    <label for="prezzo">Prezzo</label>
                    <input type="number" name="prezzo" value="${prodottoDaModificare.prezzo}" id="prezzo">
                </div>
                <div>
                    <input type="submit" name="invia" value="Salva modifiche"/S>
                </div>
            
            </form>
        </div>
        <#else>

        <h2>Nuovo prodotto</h2>
        <div style="margin: 20px">
            <form method="POST"  action="add" id="datiProdotto">
            
                <div>
                    <label for="nome">Nome</label>
                    <input type="text" name="nome" value="" id="nome">
                </div>
                <div>
                    <label for="descrizione">Descrizione</label>
                    <input type="text" name="descrizione" value="" id="descrizione">
                </div>
                <div>
                    <label for="prezzo">Prezzo</label>
                    <input type="number" name="prezzo" value="" id="prezzo">
                </div>
                <div>
                    <input type="submit" name="invia" value="Aggiungi"/>
                </div>
            
            </form>
        </div>

        </#if>
        <hr>

        <h2>Lista prodotti</h2>
        <div>
            <table class="table">
                <thead>
                    <tr>
                        <th>Nome</th>
                        <th>Descrizione</th>
                        <th>Prezzo</th>
                        <th>Azioni</th>
                    </tr>
                    
                </thead>
                <tbody>
                <#list listaProdotti as prodotto>
                    
                    <tr>
                        <td>${prodotto.nome}</td>
                        <td>${prodotto.descrizione}</td>
                        <td>${prodotto.prezzo}</td>
                        <td>
                            <a href="delete?id=${prodotto.id}">Elimina</a>
                            <a href="lista?id=${prodotto.id}">Modifica</a>
                        
                        </td>
                    </tr>
                </#list>
                    
                </tbody>
            </table>
        </div>
    </body>
</html>

当我尝试将值更新到表中时,出现以下错误:

FreeMarker模板错误(调试模式;在生产中使用RETHROW!):以下内容已评估为null或缺失:==

共有1个答案

秦胡媚
2023-03-14

你的问题是当你做mm.add属性("prodottoDaModificare", p)时,p不是Prodotto对象,而是Option。当然,Option没有nome属性。使用mm.add属性("prodottoDaModificare",p.orElse(null))(或者如果对象必须在那里,则orElseThrow)。

 类似资料:
  • 我在尝试更新我的Eclipse时出错! 以下是在“安装下载0”期间发生内部错误的错误日志 Java . lang . illegalargumentexception:比较法违反了它的通用契约!at Java . util . comparabletimsort . merge hi(comparabletimsort . Java:835)at Java . util . comparablet

  • 问题内容: 我尝试通过bash脚本执行此命令,但出现以下错误: 错误stacktrace: {“错误”:“ IndexPrimaryShardNotAllocatedException [[my_index]主要未分配后api]”,“状态”:409} {“错误”:“ ElasticSearchIllegalArgumentException [无法更新非动态设置[[index.analysis.f

  • 下面是一个使用fxml和NetBeans的javafx的简单标签项目。问题是,当我用 它只是得到一个例外,给出如下。 下面是main的代码, fxml, 这里是控制器的代码, 这里有个例外,

  • UPDATE IDConfig设置女性ID=女性ID 1; 获取错误,如您正在使用安全更新模式,并且您试图更新一个没有使用KEY列的WHERE的表要禁用安全模式,请在首选项中切换选项-

  • 基本上我是按照这个指示做的:http://thecodeship.com/deployment/deploy-django-apache-virtualenv-and-mod_wsgi/ 但结果是: 尚未找到任何服务器 请求方法:获取请求URL:http://52.25.226.143/admin/ Django版本:1.5.11异常类型:ServerSelectionTimeoutError异常

  • 我试图执行一个简单的更新记录函数,但它给我一个错误,我找不到原因或任何其他人有它。 可以在以下位置找到示例测试项目:https://github.com/billbarni/jooq-studer-h2-test Java代码: 数据库创建表达式: 梯度发生器配置: Java在编译之前给了我这个错误: 在DSLContext中执行更新(R) 这个问题背后的原因是什么?我做错了什么? 观察。:我有2