我有一個更新窗體,使用複合鍵所有組合鍵都顯示在輸出框中,因爲每個複合鍵都有隱藏字段。驗證錯誤後,這些輸出框值爲空。我該如何解決這個問題。我在同一個頁面上,所以它沒有價值。JSF驗證錯誤,丟失值
1
A
回答
2
這的確是的非直觀的行爲(我曾經在鑽嘴魚科的問題清單提交了issue反對,但他們似乎並沒有用它做任何事情)。整個問題是,組件的值不必要的是也進入整個驗證週期,而沒有用戶控制輸入的手段。驗證失敗時它會丟失。至少有三種方法可以解決這種非直觀的行爲。
第一種方式是使用在而不是binding
:
<h:inputHidden binding="#{bean.hidden}" />
這樣的值不會發生不必要的驗證週期。然而,這需要在支持bean代碼中獲取/設置值的方式進行更改。例如:
private HtmlInputHidden hidden = new HtmlInputHidden(); // +getter +setter.
public void setHiddenValue(Object hiddenValue) {
hidden.setValue(hiddenValue);
}
public Object getHiddenValue() {
return hidden.getValue();
}
二(和IMHO的首選方式)是使用Tomahawk的t:saveState
代替。
<t:saveState value="#{bean.property}" />
主要優點是您不需要更改支持bean代碼中的任何內容。它將在應用請求值階段提前恢復該值。你只需要添加額外的庫,如果還沒有完成的話,但是Tomahawk比t:saveState
提供更多的優勢,比如基本的JSF實現丟失的組件/功能t:inputFileUpload
,t:dataList
,t:dataTable preserveDataModel="true"
,t:selectOneRadio layout="spread"
等等,它是值得的努力。
第三種方法是將其存儲在會話範圍的bean中,但實際上不希望爲請求範圍的變量執行此操作。它只會給「wtf?」在最終用戶在同一會話中打開多個選項卡/窗口時的體驗。
相關問題
- 1. JSF驗證錯誤:正確的值丟失
- 2. 驗證失敗後JSF <t:inputFileUpload>值丟失
- 3. 驗證錯誤後丟失陣列
- 4. JSF驗證錯誤:值無效
- 5. SSL證書丟失錯誤
- 6. JSF自定義UISelectOne回發錯誤;驗證錯誤:值無效
- 7. 焦點丟失後使用ajax觸發JSF驗證
- 8. 在驗證和驗證之間綁定的TextBox值丟失
- 9. JSF自定義消息驗證錯誤
- 10. 錯誤驗證對話InputText Primefaces jsf
- 11. JSF「錯誤Mac沒有驗證!」
- 12. 用戶驗證丟失率
- 13. 驗證失敗錯誤
- 14. proxmox錯誤:驗證失敗
- 15. 驗證失敗錯誤parse.com
- 16. 報價是從驗證錯誤消息與omnifaces`o:validateMultiple`丟失的
- 17. WooCommerce api身份驗證錯誤oauth_consumer_key參數丟失
- 18. 驗證錯誤發生時丟失的參數
- 19. 當驗證碼錯誤表單數據丟失
- 20. xsd驗證抱怨同時丟失屬性和錯誤屬性
- 21. 驗證錯誤後,表單操作會丟失帖子ID - CakePHP
- 22. ManagementForm數據丟失錯誤而表單集驗證
- 23. JSF轉換器驗證錯誤:值無效selectOneMenu用於UIComponent
- 24. JSF頁面拋出j_idt9:螺柱:驗證錯誤:值無效
- 25. rich:pickList&selectManyListbox - JSF轉換器驗證錯誤:值無效
- 26. JSF轉換器:驗證錯誤:值無效
- 27. Twitter4j IllegalStateException:身份驗證憑證丟失
- 28. Android Twitter4J - 驗證憑證丟失
- 29. svn SSL錯誤:證書驗證失敗?
- 30. PERL Get_Server_Certificate證書驗證失敗錯誤