2016-03-04 56 views
1

我得到一个错误:Neither BindingResult nor plain target object for bean name 'foo' available as request attribute,我找不到原因。我知道这件事已经有一些问题了,我已经尝试了他们的解决方案,但无济于事。BindingResult和bean名称的普通目标对象都不作为请求属性,我不知道为什么

至于头因为我(全部实际变量已替换为metasyntactic变量)的代码:

在JSP中不起作用:

<form:form name="myForm" 
class="form-horizontal form-row-seperated" action="#" 
onsubmit="return isformSubmit();" method="post" 
modelAttribute="foo"> 

在Java控制器对于JSP说:

@RequestMapping(value="bar", method = RequestMethod.POST) 
public @ResponseBody Boolean baz(
    @ModelAttribute("foo") FOOBEAN fooBean, 
// Ten @RequestParam strings have been omitted for brevity 
, HttpServletRequest qux) throws QUUXEXCEPTION { 

foo没有在网络配置页面显示其他地方。

我知道我做错了什么,但我不知道究竟是什么。如果我没有给出足够的上下文,请告诉我。

更新:这里是FOOBEAN类。我在这里重复使用了大变量变量。它们是而不是与控制器类中的变量相同。此外,FOOBEANFoo除此之外无关FooFOOBEAN内的变量。

public class FOOBEAN { 

    private String Foo; 

    private String Bar; 

    private String Baz; 

    private String Qux; 

    private String Quux; 

    private String Corge; 

    private String Grault; 

    private String Garply; 


    public String getFoo() { 
     return Foo; 
    } 

    public void setFoo(String foo) { 
     Foo = foo; 
    } 

    public String getBar() { 
     return Bar; 
    } 

    public void setBar(String bar) { 
     Bar = bar; 
    } 

    public String getBaz() { 
     return Baz; 
    } 

    public void setBaz(String baz) { 
     Baz = baz; 
    } 

    public String getQux() { 
     return Qux; 
    } 

    public void setQux(String qux) { 
     Qux = qux; 
    } 

    public String getQuux() { 
     return Quux; 
    } 

    public void setQuux(String quux) { 
     Quux = quux; 
    } 

    public String getCorge() { 
     return Corge; 
    } 

    public void setCorge(String corge) { 
     Corge = corge; 
    } 

    public String getGrault() { 
     return Grault; 
    } 

    public void setGrault(String grault) { 
     Grault = grault; 
    } 

    public String getGarply() { 
     return Garply; 
    } 

    public void setGarply(String garply) { 
     Garply = garply; 
    } 

} 
+0

FOOBEAN是如何定义的?请分享这个定义。 – Ayman

+0

@Ayman定义已添加。 – PSDuckie

+0

我在阅读你写的内容时有点难过,有什么办法可以请格式化为代码? – PSDuckie

回答

1

您需要添加BindingResult对象作为参数并初始化模型如下:

@ModelAttribute("foo") 
public FOOBEAN getFoo(){ 
    return new FOOBEAN(); 
} 

public @ResponseBody Boolean baz(@ModelAttribute("foo") FOOBEAN fooBean, BindingResult result, HttpServletRequest qui) { 
    // method body does here 
} 

注意,的getFoo方法必须在GET处理函数中调用,即您使用该方法返回视图名称。

+0

那么你说的是我应该在控制器中的原始方法之前添加前四行? – PSDuckie

+0

是的,您需要在渲染视图之前将对象“foo”添加到模型中。 – Ayman

+0

好的,我这样做,我得到了代码行2上的重复修饰符错误。我试过在第1行后面加上分号,但后来Eclipse认为我在制作一个枚举并给了我一个语法错误。也许你的代码中有一个错字? – PSDuckie

相关问题