Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Yabe上新的恼人NPE(创建自定义编辑器)_Java_Nullpointerexception_Playframework - Fatal编程技术网

Java Yabe上新的恼人NPE(创建自定义编辑器)

Java Yabe上新的恼人NPE(创建自定义编辑器),java,nullpointerexception,playframework,Java,Nullpointerexception,Playframework,我正在逐步完成这个Yabe教程,并且一直很高兴地得到bug并自己解决它们。。。。直到现在 在 这是关于可自定义编辑窗口的部分 无论出于何种原因,当我发布新消息时,通过 http://localhost:9000/admin/new 我收到标签周围的空指针 In /app/controllers/Admin.java (around line 48) 44: post.content = content; 45: post.tags.clear()

我正在逐步完成这个Yabe教程,并且一直很高兴地得到bug并自己解决它们。。。。直到现在

这是关于可自定义编辑窗口的部分

无论出于何种原因,当我发布新消息时,通过

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>

检查您是否拥有它。

在调用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>

检查您是否有它。

您没有显示要拆分的标记变量来自何处…您没有显示要拆分的标记变量来自何处…我有。它是form.html,它有一些语法错误。NPE消失了!我有。它是form.html,它有一些语法错误。NPE消失了!