的密碼創建一個單獨的@Transient String
領域,從CRUD輸入要填充:
@Password
@Transient
public String password;
然後從你的散列字段中刪除@Required
註解。它不需要從CRUD填充。
接下來,創建一個新的方法,並與@PrePersist
註釋,所以它會被執行的模型保存之前:
@PrePersist
public void prePersist() throws Exception {
this.hash = Codec.hexMD5(this.password.getBytes());
}
UPDATE:
要讓@Transient
場出現在您的CRUD視圖中,您需要自定義控制器的CRUD的blank
視圖。打開外殼/命令提示符並執行以下命令(用你的控制器類的實際名稱取代「your_controller」):
play crud:ov --template your_controller/blank
這應該在你的應用程序中的CRUD blank.html模板複製到views/your_controller/blank.html
。打開該文件,尋找#{crud.form /}
標籤,並在它下面添加下面的代碼:
<div class="crudField crud_password">
<label for="object_password">&{'label.password'}</label>
<input id="object_password" type="password" name="object.password" value="" />
<span class="crudHelp"></span>
</div>
密碼字段現在應該出現在其他表單字段後。
感謝您的回覆。我正在探索在插入時觸發哈希的數據庫方式,但我會定義嘗試您的響應。 – JuanToroMarty 2012-02-21 12:05:23
@Transient字段不顯示在Users CRUD表單中。我做錯了什麼? – JuanToroMarty 2012-02-21 15:15:18
不,你說得對,我忘了@Transient字段不會自動出現在視圖中。我用補充說明更新了我的答案。 – Tommi 2012-02-22 06:11:15