2013-03-18 29 views
1

我發現了一個使用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.... 
} 

它是使用UserRole作爲複合密鑰的舊的遺留類(這意味着它不一個好的設計,但我們必須忍受它)。所以,我必須使用另一種複合鍵類@RooIdentifier

@RooIdentifier 
Class PositionPK extends Serializable { 
    User user; 
    Role role; 
    //override equals and hashCode blahblah... 
} 

的問題是,update.jspx頁面,在這裏我給一個字段更新的位置User,形式返回任何異常,但返回Usernull上。

然後我嘗試對用戶字段添加回到位置類(不是好的設計很好,但用於調試的目的,所以用戶在實體類和PK類都存在),現在的應用程序丟給我一個例外:

javax.validation.ValidationException: Call to TraversableResolver.isReachable() threw an exception 

電話TraversableResolver.isReachable()拋出一個異常

我掏有關異常似乎實體類可能丟失的getter/setter或ID。由於getter/setter都是由Roo管理的,所以它不應該成爲問題,所以我認爲問題在於Spring MVC如何將主鍵類轉換爲前端jsp視圖以及反之亦然。

任何提示,將不勝感激。

回答

1

我沒有看到在您提供的代碼示例中自動生成獲取器和設置器的註釋。

既然你已經提到Roo會管理getter和setter,那麼你可以嘗試給主鍵類添加@RooJavaBean註釋嗎?

+0

謝謝。是的,這些類在RooJavaBean中註釋,但是您正確的大多數情況是由於缺少實體/ setter/getters造成的。 – Dreamer 2013-03-19 16:50:08

+0

我已經發現問題是組合鍵類'PositionPK'的一些字段沒有很好地呈現在視圖頁面(我使用position.user.id而不是position.id.user.id),所以得到異常。我想這是使用複合鍵類時需要考慮的事情,因爲有兩種方式可以訪問成員字段。 – Dreamer 2013-03-19 16:53:52