reRendered links broken due to replacing & with & #38;
matt.drees Sep 9, 2008 12:45 AMHi,
I have a seam-facelets-richfaces app that works great in Firefox and IE. However, there is one section that has a table with links that is re-rendered by a4j, and Safari doesn't like the links that are re-rendered. The links that are rendered in the initial page rendering are fine, but when the table is re-rendered by a4j, the links are unusable. Initially, the links are rendered like this:
<a href="/crs/admin/editHome.seam?conversationPropagation=begin&conferenceId=9&cid=19" id="conference_listing:3:manageLink">Manage</a>
However, after an a4j re-render, the links look like this:
<a href="/crs/admin/editHome.seam?conversationPropagation=begin& #38;conferenceId=13& #38;cid=20" id="conference_listing:3:manageLink">Manage</a>
(Note: I've manually added a space in between "&" and "#38;" for this forum; otherwise the forum will show "&" instead of spelling it out, even though it's in a code block)
The & entity reference has been replaced by the & #38; numeric character reference. For some reason, Safari doesn't like this, and if I click on the link, the second two parameters (conferenceId and cid) are lost.
From a4j:log, I can tell the server is sending back links with & in ajax responses, so I suspect this is a client-side a4j javascript issue.
Is this an a4j bug? If not, is there a way I can prevent a4j from converting & references into & #38; references?
Also, Google Chrome breaks same way Safari does, but Firefox 3 and IE are fine (they both render the link with & instead of & #38;).
Thanks!
I've pasted the xhtml snippet below.
I'm using richfaces 3.2.1GA
<a:outputPanel id="conferenceSearchResults" ajaxRendered="true">
<s:div id="conference_search_results_div"
rendered="true">
<h2>Conference Listing</h2>
<h:outputText value="No Conferences Found" rendered="#{empty conferenceSearching.resultList}"/>
<h:dataTable id="conference_listing" value="#{conferenceSearching.resultList}"
styleClass="segmented"
var="conf" rendered="#{not empty conferenceSearching.resultList}">
<h:column id="conference_name">
#{conf.name}
</h:column>
<h:column id="conference_begin_date">
<h:outputText value="#{conf.beginDate}">
<s:convertDateTime type="date" dateStyle="short"/>
</h:outputText>
</h:column>
<h:column id="conference_edit">
<s:link id="manageLink"
value="Manage"
view="/admin/editHome.xhtml">
<f:param name="conversationPropagation"
value="begin"/>
<f:param name="conferenceId"
value="#{conf.id}"/>
</s:link>
</h:column>
</h:dataTable>
<s:link value="More results" action="#{conferenceSearching.next}" rendered="#{conferenceSearching.nextExists}"/>
</s:div>
</a:outputPanel>