J2EE進階(十一)SSH架構整合常見問題匯總(二)

來源:互聯網
上載者:User

標籤:

J2EE進階(十一)SSH架構整合常見問題匯總(二) 問題8

      java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean

     解決

      資料庫中userdetail表的對應檔如下,可見xb欄位資料類型為boolean類型,而自己在userdetail模型類中定義的類型為String類型。為此可以得出這樣的結論。模型類中的資料及類型必須與資料表對應檔中的欄位資訊保持一致。應該可以同時產生pojo類和對應檔,只是自己當時進行項目設定時沒有進行相應的設定,從而招致後期錯誤的不斷出現。

 

問題9

      org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of cn.edu.ujn.model.User.orderses

     解決

     初步懷疑是資料表對應檔出的問題。User.hbm.xml檔案存在以下內容:

  

      <set name="orderses" inverse="true">            <key>                <column name="userid" />            </key>            <one-to-many class="cn.edu.ujn.model.Orders" />    </set>

      通過參考課本,得知Set集合屬性需要使用<Set.../>元素進行映射,使用<key.../>元素映射外鍵列,用於保證持久化類和集合屬性的關聯。Hibernate映射Set集合屬性時應指定映射表名,即以上代碼應更改為

        <set name="orderses" table="orders" inverse="true">            <key>            <!-- 指定外鍵欄位的列名 -->                <column name="userid" />            </key>            <one-to-many class="cn.edu.ujn.model.Orders" />   </set>

      從以上定義可知,變數orserses應為Set集合資料類型,應定義為private Set<String> orderses = new HashSet<String>();同時設定其get、set方法。而自己之前將其定義為了String類型,導致get時探索資料類型不一致而報錯。

      經過以上更改,當使用者輸入正確的使用者名稱與密碼時即可登入到正確的頁面。

問題10

      明明在jsp檔案內調用了js方法,但是始終沒有效果。

      解決

      經過調試直接在js檔案內執行alert("測試");快顯視窗,而Window.alert("測試");卻沒有快顯視窗,經過網上一番搜尋,也沒有找出合理的解釋。將彈窗改為alert();之後,問題得以解決。

問題11

      jsp頁面中存在語句:<s:property value="#request.msg"/>,其中request為action中所定義的變數。

      Map request = (Map) ActionContext.getContext().get("request");

       request.put("request", "舊密碼錯誤,請重新輸入");

      但是當自己的舊密碼輸錯時,錯誤提示總是不會顯示。

      解決

      再次對照視頻發現原來是自己將代碼敲錯了,o(︶︿︶)o 唉,不知為不過啊!其實之前自己就看著代碼不對勁。正確代碼如下:

Map request = (Map) ActionContext.getContext().get("request");request.put("msg", "舊密碼錯誤,請重新輸入");

問題12

      在設定分頁操作時,總是會出現不能正確顯示現象。如所示:

 

      Jsp頁面代碼如下:

  <s:iterator value="#request.catalogs" id="catalog">  <a href="browseFlowerPagingAction.action?catalogid=<s:property value="#catalog.catalogid"/>¤tPage=1" target="_self"><s:property value="#catalog.catalogname"/> </a>    <br><br>        </s:iterator>

      解決

      再次對照視頻,也沒有發現有什麼紕漏的地方。而且地址欄顯示為

      http://localhost:8088/flowerGift/browseFlowerPagingAction.action?catalogid=3¤tpage=1,但是console控制台顯示page.currentPage:2。這就令自己很是費解了。明明設定的是從第一頁開始顯示的,為何就不見效果呢?

      通過仔細觀察代碼發現,原來變數currentPage錯寫為了currentpage一字之差啊。這裡的currentPage本是Page類中的成員變數。當初自己太粗心了,導致後期檢查錯誤特別吃力。O(︶︿︶)o 唉,自己挖的坑還得坑自己啊,到頭來還得自己填坑。

  <s:iterator value="#request.catalogs" id="catalog">  <a href="browseFlowerPagingAction.action?catalogid=<s:property value="#catalog.catalogid"/>currentPage=1" target="_self"><s:property value="#catalog.catalogname"/> </a>    <br><br></s:iterator>
 

問題13

      在進行訂單提交操作時,出現了一下錯誤提示:

 


 

      解決

      初步判定是由model中變數類型與資料表對應檔中的資料類型不一致造成的。這個問題與問題5和問題9比較相似。經過尋找,發現OrderItem中的flowerid為int類型,而與Flower中的flowerid資料類型Integer不同,更改之後,問題得以解決。有關Integer與int資料類型的區別,詳見注4。

問題14

      提交訂單操作時,發現jkxyshsflower.orders表資料寫入沒有問題,但是與訂單相關聯的jkxyshsflower.orderitem表中flowerid的值卻沒有寫入,此問題與問題6頗為相似,均涉及到了表的級聯操作問題。問題6迄今尚未得到解決。其中orders資料表的對應檔內容如下:

 

其中,在映射set集合時,配置項如所示。注意其中使用了級聯屬性cascade=“all”。視頻中的資料寫入沒有任何問題,但是自己實踐時卻出現了無法寫入的情況。

 

jkxyshsflower.orders表

 

jkxyshsflower.orderitem表

   解決

     經過查看程式,發現果然還是對應檔配置錯誤出現的問題,最好的方法就是利用Hibernate的反向工程功能,自動產生資料表對應model類及映射設定檔。具體方法參見博文《J2EE進階(七)利用SSH架構根據資料表建立model類》。這樣問題6同樣得到解決。

 

jkxyshsflower.orders表

 

jkxyshsflower.orderitem表

問題15

     在掛失解掛使用者時,出現了如下錯誤提示:

 


 

     解決

     manageUser.jsp部分代碼如下:

 

     哪哪都是戲,不知怎麼的,程式突然又可以了。及時重啟服務、清緩衝是常做的工作。

美文美圖

J2EE進階(十一)SSH架構整合常見問題匯總(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.