2013-05-30 57 views
0

在我的應用程序中,其中一個jsp能夠成功地將輸入參數通過命令對象傳遞給我的控制器。然而,我對另一個jsp及其控制器採取了同樣的方法,它不起作用。我從來沒有爲任何其他JSP工作過。<spring:bind命令對象未被填充

以下是碼 - 彈簧XML

<bean id="uploadController" 
     class="com.UploadController"> 
     <property name="commandName"> 
      <value>formBean</value> 
     </property> 
     <property name="commandClass"> 
      <value> 
       com..TemplateDownloadFormBean 
      </value> 
     </property> 
     <property name="formView"> 
      <value>uploadTemplates</value> 
     </property> 
     <property name="successView"> 
      <value>uploadSuccess</value> 
     </property> 
    </bean> 
</beans> 

控制器

public class UploadController extends SimpleFormController { 
    private static final long serialVersionUID = -3208409086358916855L; 

    private static final Logger logger = Logger 
      .getLogger(UploadController.class); 

    protected ModelAndView onSubmit(HttpServletRequest request, 
      HttpServletResponse response, Object command, BindException errors) 
      throws Exception { 
     logger.debug("Entered UploadController - OnSubmit"); 

     TemplateDownloadFormBean formBean = (TemplateDownloadFormBean) command; 
     logger.debug(formBean.getSearchString()); 
     Enumeration en = request.getAttributeNames(); 

     while (en.hasMoreElements()) { 
      logger.debug(en.nextElement()); 
     } 

     return new ModelAndView(getSuccessView()); 
    } 

JSP

<html xmlns="http://www.w3.org/1999/xhtml"> 
<body> 
<form action="uploadTemplates.do" method="post" 
    enctype="multipart/form-data"> 
<table> 
    <tr> 
     <td><spring:hasBindErrors name="formBean"> 
      <c:forEach var="errMsgObj" items="${errors.allErrors}"> 
       <div align="center" class="errorStyle"><spring:message 
        code="${errMsgObj.code}" /></div> 
      </c:forEach> 
     </spring:hasBindErrors></td> 
    </tr> 

    <tr> 

     <spring:bind path="formBean.searchString"> 
      <td align="left"><input type="text" name="searchString" /></td> 
     </spring:bind> 
    </tr> 
    <tr> 
     <td><input type="submit" value="SearchTemplate" 
      name="SearchTemplate" /></td> 
    </tr> 
</table> 
</form> 
</body> 
</html> 

該S ame聲明結構適用於我的其他JSP在同一個應用程序中。但在這裏失敗。如果有人能告訴我我在這裏做錯了什麼。

+0

logger.debug(formBean.getSearchString());對於searchstring具有null。 – vasanta

回答

0

您應該使用Spring form標籤,因爲它們能夠呈現正確的<input>元素名稱。你的錯誤可能是在這裏(注意不同的名稱):

<input type="text" name="formBean.searchString" /> 

標籤<spring:bind>你的情況絕對沒用。該標籤有不同的用途,與您的用例無關。


Btw。你知道你在Spring中使用了一些非常古老的東西:)?現在,處理程序通過@Controller@RequestMapping註釋完成。如果您是Spring的新手,請查看Spring文檔和Greenhouse reference project

+0

謝謝帕維爾,我會在一分鐘內嘗試你的建議,看看它是否有幫助。當我在一個月前剛開始應用程序時,我拿出了最新的彈簧罐並開始解決它。但是可能在春季遇到同樣的問題:綁定可能是罪魁禍首,但我認爲讓我們回到舊版本。我從幾年前的一個應用程序中挑選彈簧罐......就是這樣。現在,再次使用spring 3重做應用程序,我認爲我的運行時間很短。所以會以某種方式讓這個工作。 – vasanta

+1

我將我的應用程序升級到了Spring 3,並使用註釋重新標記了正在進行的部分。它的工作很好。謝謝。 – vasanta