我發現了一個使用Spring MVC/Apache Tiles的問題。JSP EL/Apache Tiles ---返回對象有複合鍵
update.jspx提出了當前實體(Position.java),其具有複合關鍵字的更新形式:
@RooJpaActiveRecord(persistenceUnit = "theUnit", transactionManager = "theManager", table = "theTable", identifierType = PositionPK.class)
Class Position{
//User user;
//Role role;
//other fields....
}
它是使用User
和Role
作爲複合密鑰的舊的遺留類(這意味着它不一個好的設計,但我們必須忍受它)。所以,我必須使用另一種複合鍵類@RooIdentifier
@RooIdentifier
Class PositionPK extends Serializable {
User user;
Role role;
//override equals and hashCode blahblah...
}
的問題是,update.jspx頁面,在這裏我給一個字段更新的位置User
,形式返回任何異常,但返回User
爲null
上。
然後我嘗試對用戶字段添加回到位置類(不是好的設計很好,但用於調試的目的,所以用戶在實體類和PK類都存在),現在的應用程序丟給我一個例外:
javax.validation.ValidationException: Call to TraversableResolver.isReachable() threw an exception
電話TraversableResolver.isReachable()拋出一個異常
我掏有關異常似乎實體類可能丟失的getter/setter或ID。由於getter/setter都是由Roo管理的,所以它不應該成爲問題,所以我認爲問題在於Spring MVC如何將主鍵類轉換爲前端jsp視圖以及反之亦然。
任何提示,將不勝感激。
謝謝。是的,這些類在RooJavaBean中註釋,但是您正確的大多數情況是由於缺少實體/ setter/getters造成的。 – Dreamer 2013-03-19 16:50:08
我已經發現問題是組合鍵類'PositionPK'的一些字段沒有很好地呈現在視圖頁面(我使用position.user.id而不是position.id.user.id),所以得到異常。我想這是使用複合鍵類時需要考慮的事情,因爲有兩種方式可以訪問成員字段。 – Dreamer 2013-03-19 16:53:52