2013-02-17 55 views
0

我使用瓷磚,Spring MVC,Spring窗體標籤。我想逐步形成一個表格。當點擊一個按鈕時,顯示來自另一個瓷磚定義的更多輸入。但是拋出一個異常找不到「BindingResult和bean名稱的普通目標對象」,它看起來「更多的輸入」不能從以前的請求中獲取bindle對象,是不是?我可以分開一個彈簧表單嗎?

的源代碼:

<form:form action="/saveTicker.do" commandName="ticker" modelAttribute="ticker" method="post"> 
... 
<form:input path="name" id="name"/> 
<a href="#" class="btn" onclick="confirmTicker();">Confirm</a> 
<div class="row" id="filelist"> 
</div> 
</form> 

JS

var confirmTicker=function(){ 
var ticker=$('input:text').val(); 
$.get("/confirmTicker.do",{ticker:ticker}).success(function(data){ 
    $('#filelist').html(data); 
}); 

}

要導入另一個文件

<table class="table "> 
<c:forEach var="f" items="${fileList}"> 
    <tr> 
     <td> 
      <form:checkbox path="files" value="${f}"></form:checkbox> 
     </td> 
    </tr> 
</c:forEach> 
</table> 

的錯誤是

Neither BindingResult nor plain target object for bean name 'files' available as request attribute 
+0

你可以發佈控制器方法代碼嗎? – 2013-02-18 05:07:30

+0

使用commandName或modelAttribute;不是都。並且您是否在模型中添加了「ticker」。 [**檢查我的答案這裏**](http://stackoverflow.com/questions/8781558/neither-bindingresult-nor-plain-target-object-for-bean-name-available-as-request/8785223#8785223 )。可能有幫助。 – Vinay 2013-02-18 09:11:23

回答

0

如果我正在閱讀此內容,那麼您需要的是一個「嚮導」表單,其中用戶從一個表單傳遞到下一個表單作爲一系列步驟。首先,我相信Spring Web Flow可以實現這一功能,但是,如果像我一樣,您不能使用Spring Web Flow,則可以手動執行此操作。

首先,您需要一個Form Bean(讀取Command對象),它具有所有表單的所有可能輸入。

接下來,您將擁有一個Controller方法來接受您的Form Bean並返回適當的步驟(這是我所做的),或者您可以有多個方法......無關緊要。您將在處理程序方法上使用@ModelAttribute註釋將表單Bean綁定到視圖表單。此外,@SessionAttributes註釋在控制器的頂部將表單Bean設置爲會話屬性。確保@ModelAttribute,@SessionAttribute和視圖的名稱都對應於相同的屬性名稱。

最後,創建多個視圖,每個視圖都相同,但每個視圖都只有您想要在FormBean上設置的部分。你不能使用JSR 303,或者至少我不知道你能怎麼做,因爲你不能在步驟之間進行驗證。您將不得不自行處理驗證。

+0

它看起來有點難,只是找到了一個簡單的解決方案,使用jquery加載一個新的表單來代替舊的表單。 – atu0830 2013-03-16 01:52:18

相關問題