Created
July 20, 2016 13:16
-
-
Save armand1m/f939e6af43a60f90bd8e60cda8558cd8 to your computer and use it in GitHub Desktop.
Fixer for updating and setting view state hidden field for multiple forms ajax requests in JSF 2.0/2.1/2.2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function() { | |
jsf.ajax.addOnEvent(function(data) { | |
if (data.status == "success") { | |
var viewState = getViewState(data.responseXML); | |
for (var i = 0; i < document.forms.length; i++) { | |
var form = document.forms[i]; | |
if (form.method == "post" && !hasViewState(form)) { | |
createViewState(form, viewState); | |
} | |
} | |
} | |
}); | |
function getViewState(responseXML) { | |
var updates = responseXML.getElementsByTagName("update"); | |
for (var i = 0; i < updates.length; i++) { | |
if (updates[i].getAttribute("id").match(/^([\w]+:)?javax\.faces\.ViewState(:[0-9]+)?$/)) { | |
return updates[i].textContent || updates[i].innerText; | |
} | |
} | |
return null; | |
} | |
function hasViewState(form) { | |
for (var i = 0; i < form.elements.length; i++) { | |
if (form.elements[i].name == "javax.faces.ViewState") { | |
return true; | |
} | |
} | |
return false; | |
} | |
function createViewState(form, viewState) { | |
var hidden; | |
try { | |
hidden = document.createElement("<input name='javax.faces.ViewState'>"); | |
} catch(e) { | |
hidden = document.createElement("input"); | |
hidden.setAttribute("name", "javax.faces.ViewState"); | |
} | |
hidden.setAttribute("type", "hidden"); | |
hidden.setAttribute("value", viewState); | |
hidden.setAttribute("autocomplete", "off"); | |
form.appendChild(hidden); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment