I am developing a Seam web application with 2.0.0.GA and I am writing a custom facelets
component that instantiates seam and a4j components and renders itself.
Everything seems to be working fine but I have a problem where HtmlAjaxCommandLink (and
HtmlCommandLink) will not work to call an action method I have set using
setActionExpression, though switch to HtmlLink and it works fine.
| HtmlAjaxCommandLink link = new HtmlAjaxCommandLink();
| link.setId("link-"+id);
| div.getChildren().add(link);
| link.setParent(div);
| link.setValue(name);
| link.setReRender("some-id");
| MethodExpression methodExpression
FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createMethodExpression(FacesContext.getCurrentInstance().getELContext(),
"#{SomeAction.editAction("+id+")}", null, new Class<?>[0]);
| link.setActionExpression(methodExpression);
|
When I click this link it seems to rerender the part of the page it's supposed to,
however the action is not called. This happens similarly when the link is defined as
HtmlCommandLink except the page is reloaded.
When I define the link as HtmlLink (seam link) it works fine and the action is called, but
the page is reloaded, and I am trying to do it with an ajax rerender.
One hint is about my problem is that when the a4j;outputPanel that I am rerendering is not
set and ajaxRendered=false than the link doesn't rerender anything and a4j log output
is as follows:
| debug[18:02:53,999]: Have Event [object Object] with properties: target:
http://localhost:8080/calendar/home.seam#, srcElement: undefined, type: click
| debug[18:02:54,000]: NEW AJAX REQUEST !!! with form :j_id177
| debug[18:02:54,017]: Append hidden control j_id177 with value [j_id177] and value
attribute [j_id177]
| debug[18:02:54,018]: Append hidden control autoScroll with value [] and value
attribute []
| debug[18:02:54,018]: Append hidden control j_id177:_idcl with value [] and value
attribute []
| debug[18:02:54,019]: Append hidden control j_id177:_link_hidden_ with value [] and
value attribute []
| debug[18:02:54,019]: Append hidden control javax.faces.ViewState with value [_id1] and
value attribute [_id1]
| debug[18:02:54,020]: parameter j_id177:edit-event-1 with value j_id177:edit-event-1
| debug[18:02:54,027]: Start XmlHttpRequest
| debug[18:02:54,028]: Reqest state : 1
| debug[18:02:54,029]: QueryString:
|
AJAXREQUEST=_viewRoot&j_id177=j_id177&autoScroll=&j_id177%3A_idcl=&j_id177%3A_link_hidden_=&javax.faces.ViewState=_id1&j_id177%3Aedit-event-1=j_id177%3Aedit-event-1&
| debug[18:02:54,040]: Reqest state : 1
| debug[18:02:54,356]: Reqest state : 2
| debug[18:02:54,358]: Reqest state : 3
| debug[18:02:54,359]: Reqest state : 4
| debug[18:02:54,359]: Reqest end with state 4
| debug[18:02:54,359]: Response with content-type: text/xml;charset=UTF-8
| debug[18:02:54,360]: Full response content:
| <?xml version="1.0"?> <html
xmlns="http://www.w3.org/1999/xhtml">
| <head><link type="text/css" rel="stylesheet"
href="/calendar/a4j_3_1_3.GAcss/toolBar.xcss/DATB/eAF7WBtjAQAF7wHz" />
| <link type="text/css" rel="stylesheet"
href="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/css/msg.css" />
| <link type="text/css" rel="stylesheet"
href="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/css/msgs.css" />
| <link type="text/css" rel="stylesheet"
href="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/css/calendar.xcss/DATB/eAF7WBtjAQAF7wHz"
/>
| <link type="text/css" rel="stylesheet"
href="/calendar/a4j_3_1_3.GAcss/simpleTogglePanel.xcss/DATB/eAF7WBtjAQAF7wHz"
/>
| <link type="text/css" rel="stylesheet"
href="/calendar/a4j_3_1_3.GAcss/tabPanel.xcss/DATB/eAF7WBtjAQAF7wHz" />
|
| <script type="text/javascript"
src="/calendar/a4j_3_1_3.GAorg.ajax4jsf.javascript.AjaxScript">
</script><script type="text/javascript"
| src="/calendar/a4j_3_1_3.GAorg/ajax4jsf/javascript/scripts/form.js">
</script><script type="text/javascript"
| src="/calendar/a4j_3_1_3.GAorg.ajax4jsf.javascript.PrototypeScript">
| </script><script type="text/javascript"
|
src="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/scripts/events.js">
| </script><script type="text/javascript"
|
src="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/scripts/utils.js">
| </script><script type="text/javascript"
src="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/scripts/json/json-dom.js">
| </script><script type="text/javascript"
src="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/scripts/scriptaculous/effects.js">
| </script><script type="text/javascript"
src="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/scripts/jquery/jquery.js">
| </script><script type="text/javascript"
src="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/scripts/JQuerySpinBtn.js">
| </script><script type="text/javascript"
src="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/scripts/calendar.js">
| </script><script type="text/javascript"
src="/calendar/a4j_3_1_3.GAorg.ajax4jsf.javascript.ImageCacheScript">
| </script><script type="text/javascript"
src="/calendar/a4j_3_1_3.GAorg/richfaces/renderkit/html/scripts/browser_info.js">
| </script><script type="text/javascript"
src="/calendar/a4j_3_1_3.GAscripts/simpleTogglePanel.js"> </script>
| <script type="text/javascript"
src="/calendar/a4j_3_1_3.GAscripts/tabPanel.js">
| </script><meta name="Ajax-Update-Ids" content=""
/><title></title></head><body>
| <span id="ajax-view-state">
| <input type="hidden" name="javax.faces.ViewState"
id="javax.faces.ViewState" value="_id1" />
| </span><meta id="Ajax-Response" name="Ajax-Response"
content="true" /></body></html>
| debug[18:02:54,361]: Header Ajax-Expired not found, search in <meta>
| debug[18:02:54,361]: search for elements by name 'meta' in element #document
| debug[18:02:54,366]: getElementsByTagName found 2
| debug[18:02:54,366]: Find <meta name='Ajax-Update-Ids'
content=''>
| debug[18:02:54,367]: Find <meta name='Ajax-Response'
content='true'>
| debug[18:02:54,367]: Header Ajax-Update-Ids not found, search in <meta>
| debug[18:02:54,368]: search for elements by name 'meta' in element #document
| debug[18:02:54,372]: getElementsByTagName found 2
| debug[18:02:54,372]: Find <meta name='Ajax-Update-Ids'
content=''>
| warn[18:02:54,373]: No information in response about elements to replace
| debug[18:02:54,373]: call getElementById for id= ajax-view-state
| debug[18:02:54,374]: Hidden JSF state fields: [object HTMLSpanElement]
| debug[18:02:54,374]: Namespace for hidden view-state input fields is undefined
| debug[18:02:54,375]: search for elements by name 'input' in element span
| debug[18:02:54,378]: getElementsByTagName found 1
| debug[18:02:54,379]: Replace value for inputs: 37 by new values: 1
| debug[18:02:54,379]: Input in response: javax.faces.ViewState
| debug[18:02:54,381]: Found same input on page with type: hidden
| debug[18:02:54,382]: Found same input on page with type: hidden
| debug[18:02:54,383]: Found same input on page with type: hidden
| debug[18:02:54,384]: Found same input on page with type: hidden
| debug[18:02:54,384]: Found same input on page with type: hidden
| debug[18:02:54,385]: Found same input on page with type: hidden
| debug[18:02:54,386]: Found same input on page with type: hidden
| debug[18:02:54,386]: Found same input on page with type: hidden
| debug[18:02:54,387]: search for elements by name 'INPUT' in element span
| debug[18:02:54,390]: getElementsByTagName found 0
| debug[18:02:54,391]: Replace value for inputs: 37 by new values: 0
| debug[18:02:54,391]: call getElementById for id= _A4J.AJAX.focus
| debug[18:02:54,392]: No focus information in response
| debug[18:02:54,392]: call getElementById for id= org.ajax4jsf.oncomplete
|
But when I change the a4j outputPanel to ajaxRendered=true the link seems to work (besides
calling the action) and the panel does get rerendered and the a4j log looks normal and
contains the xhtml for the panel that is to be rerendered.
Anything obviously wrong with what I am doing? Any hints are appreciated.
Thanks,
Jon
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4120247#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...