gpt4 book ai didi

java - Yabe 上新的烦人的 NPE(创建自定义编辑器)

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:20 25 4
gpt4 key购买 nike

我正在仔细阅读这个 Yabe 教程,并且很高兴自己发现错误并解决它们......直到现在。

http://localhost:9000/@documentation/guide9

这是关于可定制编辑窗口的部分..

无论出于何种原因,当我通过

发布新消息时
http://localhost:9000/admin/new

我在标签周围收到一个空指针...

In /app/controllers/Admin.java (around line 48)
44: post.content = content;
45: post.tags.clear();
46: }
47: //Set tags list
48: for(String tag : tags.split("\\s+")){
49: if(tag.trim().length() > 0) {
50: post.tags.add(Tag.findOrCreateByName(tag));
51: }
52: }
53: // Validate
54: validation.valid(post);

我查看了 Admin.java 和 Tag.java,并将它们与示例和测试副本进行了逐行比较。唯一的区别是在 aAdmin.java 上包含了验证,我想这是以后编写的一些测试脚本..

有什么想法吗?

这是我的管理员...

package controllers;

import play.*;
import play.mvc.*;

import java.util.*;

import models.*;

@With(Secure.class)
public class Admin extends Controller {

@Before
static void setConnectedUser() {
if(Security.isConnected()) {
User user = User.find("byEmail", Security.connected()).first();
renderArgs.put("user", user.fullname);
}
}

public static void index() {
List<Post> posts = Post.find("author.email", Security.connected()).fetch();
render(posts);
}

public static void form(Long id) {
if(id != null) {
Post post = Post.findById(id);
render(post);
}
render();
}

public static void save(Long id, String title, String content, String tags) {
Post post;
if(id == null) {
// Create post
User author = User.find("byEmail", Security.connected()).first();
post = new Post(author, title, content);
} else {
// Retrieve post
post = Post.findById(id);
post.title = title;
post.content = content;
post.tags.clear();
}
//Set tags list
for(String tag : tags.split("\\s+")){
if(tag.trim().length() > 0) {
post.tags.add(Tag.findOrCreateByName(tag));
}
}
// Validate
validation.valid(post);
if(validation.hasErrors()) {
render("@form", post);
}
//Save
post.save();
index();
}
}

这是我的tag.java

package models;

import java.util.*;
import javax.persistence.*;

import play.db.jpa.*;
import play.data.validation.*;

@Entity
public class Tag extends Model implements Comparable<Tag> {

@Required
public String name;

private Tag(String name) {
this.name = name;
}

public static Tag findOrCreateByName(String name) {
Tag tag = Tag.find("byName", name).first();
if(tag == null) {
tag = new Tag(name);
}
return tag;
}

public static List<Map> getCloud() {
List<Map> result = Tag.find(
"select new map(t.name as tag, count(p.id) as pound) from Post p join p.tags as t group by t.name"
).fetch();
return result;
}

public String toString() {
return name;
}

public int compareTo(Tag otherTag) {
return name.compareTo(otherTag.name);
}

}

最佳答案

在调用 save() 方法的表单中,您可能会缺少名称为“tags”的输入。像这样的东西:

<input id="tags" name="tags" type="text" value="" />

在教程中有一个模板:

 <p>
#{field 'tags'}
<label>Enter some tags:</label>
<input type="text" size="50"
name="${field.name}" value="${post?.tags?.join(' ')}" />
#{/field}
</p>

检查您是否拥有它。

关于java - Yabe 上新的烦人的 NPE(创建自定义编辑器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243960/

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