2016-03-04 61 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

相關問題