#model #controller #playframework #non-static
#Модель #контроллер #playframework #нестатический
Вопрос:
Я следил за play framework 1.1.1, чтобы добавить руководство по комментариям, а затем столкнулся с этой проблемой.
проблема заключается в появлении этого сообщения об ошибке
Ошибка компиляции
Файл / приложение / контроллеры / Application.не удалось скомпилировать java. Возникла ошибка: не удается создать статическую ссылку на нестатический метод AddComment(String, строка, логическое значение, Строка) из типа Permainan
Это мое приложение.содержимое контроллера Java
package controllers;
import play.*;
import play.mvc.*;
import play.libs.*;
import java.util.*;
import models.*;
public class Application extends Controller {
public static void permainanKomentar(Long permainanId, String author, String email, boolean showEmail, String content) {
Permainan permainan = Permainan.findById(permainanId);
Permainan.addComment(author, email, showEmail, content); >> (this line)
show(permainanId);
}
}
и для Permainan.java модель
package models;
import java.util.*;
import javax.persistence.*;
import play.data.binding.*;
import play.db.jpa.*;
import play.data.validation.*;
@Entity
public class Permainan extends Model {
@Required
public String nama;
@Required
@MaxSize(5000)
@Lob
public String deskripsi;
@MaxSize(2000)
@Lob
public String material;
@MaxSize(4000)
@Lob
public String syair;
public Date postedAt;
@OneToMany(mappedBy="permainan", cascade=CascadeType.ALL)
public List<Komentar> komentar;
@ManyToMany(cascade=CascadeType.PERSIST)
public Set<Tag> tags;
public Permainan(String nama, String deskripsi, String material, String syair) {
this.komentar = new ArrayList<Komentar>();
this.tags = new TreeSet<Tag>();
this.nama = nama;
this.deskripsi = deskripsi;
this.material = material;
this.syair = syair;
this.postedAt = new Date();
}
public Permainan addComment(String author, String email, boolean showEmail, String content) {
Komentar newKomentar = new Komentar(this, author, email, showEmail, content).save();
this.komentar.add(newKomentar);
this.save();
return this;
}
}
Комментарии:
1. Привет, ребята, это была моя ошибка Permainan.AddComment (автор, электронная почта, showEmail, контент); >> (эта строка) следует изменить на permainan.AddComment (автор, электронная почта, showEmail, контент); >> (эта строка)
Ответ №1:
Java — это язык, чувствительный к регистру, что означает, что вы должны быть осторожны с регистром слов, которые вы используете. В вашем примере :
Permainan permainan = Permainan.findById(permainanId);
Здесь вы определяете экземпляр класса Permainan, который называется permainan (обратите внимание, что вы используете одно и то же для класса и экземпляра с небольшой разницей в регистре).
Permainan.AddComment(автор, электронная почта, showEmail, содержимое);
Здесь вы используете класс Permainan, а не экземпляр; и для вашего объекта нет статического метода с именем AddComment.
Итак, я думаю, вам следует использовать :
permainan.AddComment(автор, электронная почта, showEmail, содержимое);