gpt4 book ai didi

java - 如何使用一个托管 bean 执行两种方法并将数据保存在变量中?

转载 作者:行者123 更新时间:2023-12-01 04:15:42 26 4
gpt4 key购买 nike

我在一个页面中有两个使用一个托管 bean 的命令。第一种方法创建一个游览,第二种方法将照片网址添加到该游览中。但问题是,当我调用第二个方法时,我创建的游览丢失并返回 null。我该如何解决这个问题?

@ManagedBean(name="addtour")
@SessionScoped
public class CreateTourAction {
private Tour tour;
public String execute() {
tour = new Tour(this.date,this.province,this.country, this.category,transportation,this.gregarious,this.days, this.space,BigDecimal.valueOf(price));

tour.save();
return"success";
}
public void handleFileUpload(FileUploadEvent event) {
tour.setImg_urls(urls);
tour.save();
}

xml相关部分:

<h:commandButton value="Create" action="#{addTour.execute}"/>

<p:fileUpload fileUploadListener="#{addTour.handleFileUpload}" mode="advanced" dragDropSupport="true"
update="messages" sizeLimit="1000000" fileLimit="3" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />

最佳答案

您可以使用this关键字。它是对当前对象的引用。但是,如果当前对象在调用 setter 方法之一之前未初始化,则会得到 NullPointerException。因此,我建议在构造函数中初始化 tour 对象,或者始终首先调用 execute() 方法。我修改了你的代码,但我没有初始化游览,因为这是你的决定:

@ManagedBean(name="addtour")
@SessionScoped
public class CreateTourAction {
private Tour tour;
public String execute() {
this.tour = new Tour(this.date,this.province,this.country, this.category,transportation,this.gregarious,this.days, this.space,BigDecimal.valueOf(price));

this.tour.save();
return"success";
}
public void handleFileUpload(FileUploadEvent event) {
if(this.tour != null){
this.tour.setImg_urls(urls);
this.tour.save();
}
}

希望这段代码对您有所帮助!

关于java - 如何使用一个托管 bean 执行两种方法并将数据保存在变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19476014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com