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

发布于 2025-02-11 20:10:37 字数 13189 浏览 3 评论 0 原文

这是我的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/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/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或丢失:==&gt; prodottodamodificare.nome [在模板“ prodotti.ftl”第15行,第47列] ----提示:这是最后一个点后的造成此错误的步骤,而不是之前的错误。 ----提示:如果已知失败的表达方式是合法地指的是有时是无效或缺失的东西,请指定默认值,例如myoptionalvar!mydefault!mydefault,或使用&lt;#if myoptionalvar ?? ;失踪时。 (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~"含义与嵌套相关的): - 失败at:$ {prodottodamodificare.nome} [在模板“ prodotti.ftl”中,第15行,第45列] -------------------------------- java stack trace(适用于程序员):------------------------------------------------------------------------------------------------------------------------------------------------- .InvalidReferenceException:[...异常消息已在上面打印;在freemarker.core.evalutil.coercemodeltostostringormarkup(evalutil.java:401)上,freemarker.core.core.evalutil.coercececemodertostostrostringormarkup(evalutil.java:370) 。 DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:347) at freemarker.core.Environment.visit(Environment.java:353) at freemarker.core.Environment.visit(Environment 。 processTemplate(FreeMarkerView.java:391) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:304) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView. Java:255)在org.springframework.web.servlet.view.abstracttemplateview.rendermerged.outputputmodel(AbstractTemplateView.java:179)org.springframework.serwork.web.servlet.web.servlet.view.view.view.firew.abstractView.gava.render(affact.render) .web.servlet.DispatcherServlet.render(DispatcherServlet.java:1401) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1145) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java :1084)在org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:963)on org.springframewramework.web.serv.serv.servlet.frameworkservlet.frameworkservlet.frameworkservlet.processRocessRocessRocessRocessRocessRocessRocessRocessrequest(FrameWorkservServServlet.java:java:1006) FrameworkServlet.doGet(FrameworkServlet.java:898) at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet .http.httpservlet.service(httpservlet.java:764)at org.apache.catalina.core.core.applicationfilterchain.internalsdofilter(applicationfilterterchain.java:227) ) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core. ApplicationFilterChain.Dofilter(ApplicationFilterChain.Java:162)org.springframework.web.filter.requestcontextfilter.dofilterinternal(requestContextfilter.java:100) 7)在org .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter 。 core.applicationfilterchain.dofilter(applicationfilterchain.java:162)org.springframework.web.filter.filter.character.daracterencodingfilter.dofilter.dofilterinternal(artemencodingfilter.java:201) AVA:117) atorg.apache.catalina.core.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:189)on org.apache.catalina.core.core.applicationfiltertelterfilterter.dofilter.dofilter(applicationFilterChain.java.java:162) (standardWrappervalve.java:197)atorg.apache.catalina.core.standardcontextvalve.invoke(standardcontcontextvalve.java:97)at org.apache.catalina.authenticator.authenticator.authenticator.authenticatoricator.authenticatorbase.invase.invoke(AuthentIcatiCatorbase.java:55.41java:541) catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: 78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1787) at org.apache.tomcat.util.net.socketprocessorbase.run(socketProcessorbase.java:49)at org.apache.tomcat.tomcat.tomcat.threads.threads.threadpoolexecutor.runworker.runworker threads.threadpoolexecutor $ worker.run(threadpoolexecutor.java:659)at org.apache.tomcat.tomcat.util.threads.taskthread $ wrappingrunnable.run(taskthread.java:61)at Java.base/java.base/java.base/java.lang.thread.run( thread.java:833)

this is my 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 entity:

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

This is the view (Freemarker):

<!DOCTYPE html>
<html>
    <head>
        <title>Catalogo prodotti</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/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>

When i try to update a value into the table i've the following error:

FreeMarker template error (DEBUG mode; use RETHROW in production!): The following has evaluated to null or missing: ==> prodottoDaModificare.nome [in template "prodotti.ftl" at line 15, column 47] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${prodottoDaModificare.nome} [in template "prodotti.ftl" at line 15, column 45] ---- Java stack trace (for programmers): ---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.EvalUtil.coerceModelToTextualCommon(EvalUtil.java:481) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:401) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:370) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:347) at freemarker.core.Environment.visit(Environment.java:353) at freemarker.core.Environment.visit(Environment.java:353) at freemarker.core.Environment.process(Environment.java:326) at freemarker.template.Template.process(Template.java:383) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:391) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:304) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:255) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:179) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1401) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1145) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1084) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1787) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833)

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

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

发布评论

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

评论(1

灰色世界里的红玫瑰 2025-02-18 20:10:37

您的问题是,当您进行 mm.Addattribute(“ ProdottoDamodificare”,p) p 不是 prodotto 对象,而是选项。当然,选项没有 nome 属性。使用 mm.addattribute(“ prodottodamodificare”,p.orelse(null))(如果对象必须存在,则 orelsethrow )。

Your problem is that when you do mm.addAttribute("prodottoDaModificare",p), p is not a Prodotto object, but an Option. And of course, Option has no nome property. Use mm.addAttribute("prodottoDaModificare",p.orElse(null)) (or if the object must be there, then orElseThrow).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文