Details
Description
Under certain conditions, the ViewState may not get written to the page/form which causes a problem when navigating. The typical result is that every second click of a button that triggers navigation doesn't appear to work. The problematic behaviour is actually seen in Mojarra 2.0.2 without ICEfaces. The conditions required are:
The page starts with the XML preamble like: <?xml version="1.0" encoding="UTF-8"?>
The form does not have a specific id set on it: <h:form prependId="false">
The button is Ajax-enabled with render all:
<h:commandButton id="navButton" value="Go to Page 2" action="page02">
<f:ajax render="@all"/>
</h:commandButton>
So given a couple of simple pages like this that navigate back and forth to each other:
<?xml version="1.0"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Ajax Navigation</title>
</h:head>
<h:body>
<h:form prependId="false">
<p>
<h:commandButton id="navButton" value="Go to Page 2" action="page02" >
<f:ajax render="@all"/>
</h:commandButton>
</p>
</h:form>
</h:body>
</html>
will result in every second click failing.
The page starts with the XML preamble like: <?xml version="1.0" encoding="UTF-8"?>
The form does not have a specific id set on it: <h:form prependId="false">
The button is Ajax-enabled with render all:
<h:commandButton id="navButton" value="Go to Page 2" action="page02">
<f:ajax render="@all"/>
</h:commandButton>
So given a couple of simple pages like this that navigate back and forth to each other:
<?xml version="1.0"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Ajax Navigation</title>
</h:head>
<h:body>
<h:form prependId="false">
<p>
<h:commandButton id="navButton" value="Go to Page 2" action="page02" >
<f:ajax render="@all"/>
</h:commandButton>
</p>
</h:form>
</h:body>
</html>
will result in every second click failing.
Activity
Deryk Sinotte
created issue -
Deryk Sinotte
made changes -
Field | Original Value | New Value |
---|---|---|
Workaround Description |
You can either - remove the <?xml line from the document - provide a specific id attribute for the form to prevent it from oscillating (e.g. <form id="theForm") - specify a specific sub tree to render rather than rendering (<f:ajax render="theForm"/>) |
|
Workaround Exists | [Yes] | |
Salesforce Case | [] | |
Fix Version/s | 2.0-Beta [ 10231 ] |
Deryk Sinotte
made changes -
Salesforce Case | [] | |
Assignee | Deryk Sinotte [ deryk.sinotte ] |
Deryk Sinotte
made changes -
Salesforce Case | [] | |
Assignee Priority | P1 | |
Assignee | Deryk Sinotte [ deryk.sinotte ] | Mircea Toma [ mircea.toma ] |
Ken Fyten
made changes -
Assignee Priority | P1 | P2 |
Mircea Toma
made changes -
Status | Open [ 1 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Ken Fyten
made changes -
Resolution | Fixed [ 1 ] | |
Status | Resolved [ 5 ] | Reopened [ 4 ] |
Assignee Priority | P2 |
Ken Fyten
made changes -
Status | Reopened [ 4 ] | Resolved [ 5 ] |
Resolution | Won't Fix [ 2 ] |
Mircea Toma
made changes -
Resolution | Won't Fix [ 2 ] | |
Status | Resolved [ 5 ] | Reopened [ 4 ] |
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #21816 | Mon Jun 28 15:21:13 MDT 2010 | mircea.toma | |
Files Changed | ||||
MODIFY
/icefaces/scratchpads/glimmer/core/src/main/javascript/application.js
|
Mircea Toma
made changes -
Status | Reopened [ 4 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Ken Fyten
made changes -
Fix Version/s | 2.0.0 [ 10230 ] |
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
The problem seems to be that under the above conditions, the id of the form oscillates between two different values and the client code cannot properly write out the ViewState update into the form because it can't find it. If you note the workarounds, specifying a specific id for the form helps prevent this. So does removing the <?xml line (but I can't understand why this impacts the behaviour at all yet). You can also choose to render a specific subtree rather than @all and that should work as well.
Since this problem occurs without ICEfaces in Mojarra 2.0.2, we aren't going to investigate fixing it any further. We may want to consider opening a bug with the Mojarra project if the problem persists in the current Mojarra trunk.