My situation is as following: STATE_SAVING_METHOD is server. The jsp uses x:panelTabbedPane and contains three x:panelTab, one of three panelTabs contains a x:dataTable with a x:commandSortHeader and an attached x:dataScroller , we have used x:saveState to achieve state saving of this view. The problem is there is a "Export XML" button here to export data in dataTable to user, When user click this button, data will be transferred to client and user will be asked to provide a path to store the data as a file, And after that, user will still be at this page. To achieve that, we get HttpServletResponse instance and write stream to it and set "Content-disposition" header ,call responseComplete, then return null in "Export XML" action.And I found I must add following code to save SerializedView to stateManager myself.If not, The next request will be recognized as a "not postback" request which is incorrect.
StateManager stateManager = FacesContext.getCurrentInstance().getApplication().getStateManager(); //save state in server stateManager.saveSerializedView(FacesContext.getCurrentInstance()); The point is state of SerializedView will be removed if myfaces found the request is a postback request at Restore View phase, And the action of saveSerializedView is called when myfaces renders jsp file at Render Response phase which is skipped by responseComplete at our situation. My question is Am I doing the thing right? Is my solution the guys who designs JSF expected? Or any other solution more clean and comfortable? By the way, we are not allowed to use AJAX or any other javascript to achieve this. ********************************************** Zhu Da Zhi Japan DDC Section Global Delivery China Center (GDCC) Hewlett-Packard co, Ltd. Tel: +86-411-8880-5034 **********************************************