2016-02-20 57 views
1

考慮發佈的數據名稱中包含圓點,例如:fromAccount.accountNo。如果我們寫了一個自定義validatorStruts 2提交了其名稱中的圓點名稱

@CustomValidator(type = "AccountBelongsToUserValidator", fieldName = "fromAccount.accountNo") 

,寫AccountBelongsToUserValidator象下面這樣:

public void validate(Object object) throws ValidationException { 

    String fieldName = getFieldName(); 
    Object value = this.getFieldValue(fieldName, object); 

valuenull

是否有可能struts/ognl可以讀取名稱中帶有圓點的字段。我用formAccount\\.accountNo試圖逃脫點,但它沒有幫助?!

相對的動作不是ModelDriven

+0

你的物體是怎樣的?你有所有屬性的getter/setter嗎? –

回答

1

在OGNL中'。'有一個特殊的含義,它意味着一個屬性引用。所以如果你有一個對象fromAccount,它有一個屬性accountNo然後你可以通過fromAccount.accountNo訪問此屬性。它也用於投影,選擇,子表達式評估和方法調用。你不能逃避這個角色,因爲OGNL並沒有逃離運營商。但是你可以使用這個simbol'。'作爲字符文字。 OGNL還支持所有的字符轉義:

字符文字,也可作爲Java語言:單引號分隔,還擁有整套逃逸的;

OGNL通過名稱引用對象的方式類似於Java,名稱爲alphanumeric

+0

謝謝。我試圖使用'fromAccount \\ u002EaccountNo',但沒有工作('\\ u002E',而不是''。)。我想可能是我弄錯了一些東西。所以我嘗試測試一個名爲'aSampleNo'的簡單文件,並用'\ u006F'替代'o'。 'aSampleN \ u006F'完美工作,'getFieldValue'可以得到它的價值 –

相關問題