Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 无法将窗体绑定到对象_Java_Playframework - Fatal编程技术网

Java 无法将窗体绑定到对象

Java 无法将窗体绑定到对象,java,playframework,Java,Playframework,我试图建立一个简单的积垢形式。我将遵循java剧本中的示例。问题是,当我提交表单时,它确实创建了一个新的产品对象,但是产品对象中的值被设置为NULL。它们未设置为表单中填写的值。换句话说,表单似乎没有绑定到产品类 输出 Saved product null - null 表单视图html @(productForm: Form[Product]) @import helper._ @import helper.twitterBootstrap._ @main("Product form

我试图建立一个简单的积垢形式。我将遵循java剧本中的示例。问题是,当我提交表单时,它确实创建了一个新的产品对象,但是产品对象中的值被设置为NULL。它们未设置为表单中填写的值。换句话说,表单似乎没有绑定到产品类

输出

Saved product null - null
表单视图html

@(productForm: Form[Product]) 
@import helper._ 
@import helper.twitterBootstrap._ 

@main("Product form") {
<h1>Product form</h1>
@helper.form(action = routes.Products.save()) {
    <fieldset>
        <legend>Product (@productForm("name").valueOr("New"))</legend>
        @helper.inputText(productForm("ean"), '_label -> "EAN")
        @helper.inputText(productForm("name"),'_label -> "Name")
        @helper.textarea(productForm("description"), '_label ->     "Description")
    </fieldset>
    <input type="submit" class="btn btn-primary" value="Save">
    <a class="btn" href="@routes.Products.list()">Cancel</a>
} 
}
@(产品形式:形式[产品])
@导入帮助程序。\u
@导入helper.twitterBootstrap.\u
@主要(“产品形式”){
产品形式
@helper.form(action=routes.Products.save()){
产品(@productForm(“name”).valueOr(“New”))
@helper.inputText(productForm(“ean”),“_标签->“ean”)
@helper.inputText(productForm(“名称”),“U标签->名称”)
@text区域(productForm(“说明”),“\u标签->说明”)
} 
}
控制器类

package controllers;

import java.util.List;

import models.Product;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import views.html.products.list;
import views.html.products.details;

public class Products extends Controller {

public static Form<Product> productForm = Form.form(Product.class);

public static Result index() {
    return ok();
}
public static Result list() {
    List<Product> products = Product.findAll();
    return ok(list.render(products));
}

public static Result save() {
    Form<Product> boundForm = productForm.bindFromRequest();
    Product product = boundForm.get();
    product.save();
    return ok(String.format("Saved product %s", product));
}

public static Result newProduct() {
    return ok(details.render(productForm));
}

public static Result details(String ean) {
    return TODO;
}



}
包控制器;
导入java.util.List;
进口型号.产品;
导入play.data.Form;
导入play.mvc.Controller;
导入play.mvc.Result;
导入views.html.products.list;
导入views.html.products.details;
公共类产品扩展控制器{
公共静态表单productForm=Form.Form(Product.class);
公共静态结果索引(){
返回ok();
}
公共静态结果列表(){
列出产品=Product.findAll();
返回ok(列表渲染(产品));
}
公共静态结果保存(){
Form boundForm=productForm.bindFromRequest();
Product=boundForm.get();
product.save();
返回ok(字符串格式(“保存的产品%s”,产品));
}
公共静态结果newProduct(){
返回ok(details.render(productForm));
}
公共静态结果详细信息(字符串ean){
返回待办事项;
}
}
产品类别

package models;

import java.util.ArrayList;
import java.util.List;

public class Product {

public String ean;

public String name;

public String description;

private static List<Product> products;
static {
    products = new ArrayList<Product>();
    products.add(new Product("1111111111111", "Paperclips 1",
            "Paperclips description 1"));
    products.add(new Product("2222222222222", "Paperclips 2",
            "Paperclips description "));
    products.add(new Product("3333333333333", "Paperclips 3",
            "Paperclips description 3"));
    products.add(new Product("4444444444444", "Paperclips 4",
            "Paperclips description 4"));
    products.add(new Product("5555555555555", "Paperclips 5",
            "Paperclips description 5"));
}

public Product() {
}

public Product(String ean, String name, String description) {
    this.ean = ean;
    this.name = name;
    this.description = description;
}

public static List<Product> findAll() {
    return new ArrayList<Product>(products);
}

public static Product findByEan(String ean) {
    for (Product candidate : products) {
        if (candidate.ean.equals(ean)) {
            return candidate;
        }
    }
    return null;
}

public static List<Product> findByName(String term) {
    final List<Product> results = new ArrayList<Product>();
    for (Product candidate : products) {
        if (candidate.name.toLowerCase().contains(term.toLowerCase())) {
            results.add(candidate);
        }
    }
    return results;
}

public static boolean remove(Product product) {
    return products.remove(product);
}

public void save() {
    products.remove(findByEan(this.ean));
    products.add(this);
}

public String toString() {
    return String.format("%s - %s", ean, name);
}




 }
封装模型;
导入java.util.ArrayList;
导入java.util.List;
公共类产品{
公共字符串;
公共字符串名称;
公共字符串描述;
私有静态列表产品;
静止的{
products=新的ArrayList();
添加(新产品(“1111”、“回形针1”),
“回形针说明1”);
添加(新产品(“2222222”、“回形针2”),
“回形针说明”);
添加(新产品(“3333”、“回形针3”),
"回形针说明(三);;
添加(新产品(“444”、“回形针4”),
"回形针说明(四);;
添加(新产品(“55555”、“回形针5”),
"回形针(5);;
}
公共产品(){
}
公共产品(字符串ean、字符串名称、字符串描述){
this.ean=ean;
this.name=名称;
this.description=描述;
}
公共静态列表findAll(){
返回新的ArrayList(产品);
}
公共静态产品findByEan(字符串ean){
针对(候选产品:产品){
if(候选者平均数等于(平均数)){
返回候选人;
}
}
返回null;
}
公共静态列表findByName(字符串术语){
最终列表结果=新建ArrayList();
针对(候选产品:产品){
if(candidate.name.toLowerCase().contains(term.toLowerCase())){
结果。添加(候选人);
}
}
返回结果;
}
公共静态布尔删除(产品){
退回产品。移除(产品);
}
公共作废保存(){
移除(findByEan(this.ean));
产品。添加(本);
}
公共字符串toString(){
返回字符串。格式(“%s-%s”,ean,名称);
}
}

显然正在运行
玩干净
修复了它。但是我不知道为什么。

我遇到了一些问题,这些问题在我运行
play clean
之前无法解决。当我觉得事情不正常的时候,我就去做。