2012-12-10 67 views
-1

我是Struts.I的新手,我提供了一個modelBean來捕獲信息的視圖。如何防止struts2自動數據約定拋出異常

如果我用正確的形式輸入正確的信息,它可以很好地工作。 否則,如果我用錯誤的格式輸入,它會拋出異常。

說,我在courseBean.startDate進入abcd,它會拋出異常,因爲abcd不能變成Date格式。

有什麼辦法來防止這些異常?或者我應該創建一個新的Bean類並將該類的所有屬性設置爲String?

  <!--Title--> 
      <div class="control-group"> 
       <label class="control-label" for="inputEmail">Title:</label> 
       <div class="controls"> 
        <input type="text" name="courseBean.title" placeholder="Title" value="<s:property value="courseBean.title" />"/> 
       </div> 
      </div> 

     <!--Start Date--> 
     <div class="control-group"> 
      <label class="control-label" for="inputPassword">Start Date:</label> 
      <div class="controls"> 
       <input type="text" readonly="readonly" name="courseBean.startdate" placeholder="Start Date" value="<s:property value="courseBean.startdate" />" /> 
      </div> 
     </div> 

這個問題,着眼於輸入到Bean的自動數據格式約定

WARNING: Error setting expression 'courseBean.fee' with value '[Ljava.lang.String;@1b40489'當我輸入「」中,您必須驗證用戶在表單中輸入的數據,映射到courseBean.fee

+0

您可以驗證與驗證攔截器之前設置 – muthu

+0

@muthu我hav編輯我的答案:)我專注於自動數據格式約定。驗證程序是否可以防止此錯誤? – code4j

回答

1

首先是文本框。這可以通過多種方式完成,使用Annotations (section Validation Annotations),使用XML或使用簡單的validate()方法。如果官方文檔不夠,您可以在Internet上搜索很多關於如何使用Struts2驗證數據的示例。

然後我想添加一些與你的jsp相關的東西。 Struts2具有內置的標籤,可以呈現很多東西,並幫助您用jsps傳達動作。如果我們正在討論表單,我們有例如<s:form>,它可以幫助你,例如,不要在HTML表單或<s:textfield>中對動作的url進行硬編碼,這對於渲染驗證錯誤很有用。

如果問題在於您想使用Twitter Bootstrap表示法來構建頁面,則存在一個plugin,它使HTML準備好使用該CSS框架。

編輯

WARNING: Error setting expression 'courseBean.fee' 
with value '[Ljava.lang.String;@1b40489' 

與您的aproach的問題是,你正嘗試將String []分配到一個領域,可能不是一個String [](也許這是一個Date)。您必須採取String並解析它以將其轉換爲Date對象。另外,如果您不知道如何在Struts2中使用<s:textfield><s:form>,則應該查看this tutorial。它可能對你有幫助。

+0

感謝您的回答,但現在我遇到了xml表單驗證問題。我在同一個班級中定義了一些動作,他們共享相同的courseBean。一些操作是檢索數據庫記錄,但一些操作是獲取用戶輸入。當我請求那些檢索數據庫記錄的操作時,那時courseBean還沒有設置。這將違反驗證。所以我應該重構我的設計,讓一個類只做檢索數據庫記錄的操作,並讓一個類來執行接受數據輸入和驗證的操作? – code4j

+0

順便說一句,問題是關注自動數據格式約定。 例如'警告:錯誤設置表達式'courseBean.fee'值'[Ljava.lang.String; @ 1b40489'' 是XML驗證可以防止這個問題? – code4j

+0

@ code4j我用新內容編輯了我的問題。 – Pigueiras