Is it possible to use JS generated code by <a4j:jsFunction> directly ?
bardelman Apr 8, 2013 12:28 PMHi,
In the Practical Richfaces Apress book 2nd edition , it s written that "Without <a4j:jsFunction> we would have to type something similar by hand." when talking about the JS code generated by that Richfaces tag.
So, for this piece of code in my xhtml page :
<script type="text/javascript">
$(function(){
$('#mondiv').click(function(){
doAwesomeness();
});
});
</script>
</h:head>
<body>
<h:form id="form1">
<div id="mondiv" style="background-color:red;position:absolute;width:20px;height:20px;"/>
<a4j:jsFunction name="doAwesomeness" action="#{bean.awesomeMethod}"/>
</h:form>
...
I got in the source code of the generated page this code :
...
<form id="form1" name="form1" method="post" action="/Ajax4JsfAppTest/index.xhtml" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="form1" value="form1" />
<div id="mondiv" style="background-color:red;position:absolute;width:20px;height:20px;"></div>
<span id="form1:j_idt8" style="display: none;"><script type="text/javascript">doAwesomeness=function(){RichFaces.ajax("form1:j_idt8",null,{"incId":"1"} )};</script></span><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="151578633821379875:5260082206524838524" autocomplete="off" />
</form>
...
So i re-wrote my html page like this :
<h:form id="form1">
<div id="mondiv" style="background-color:red;position:absolute;width:20px;height:20px;"/>
<span id="myspan" style="display: none;"><script type="text/javascript">doAwesomeness=function(){RichFaces.ajax("myspan",null,{"incId":"1"} )};</script></span>
</h:form>
I've tried it but i got the JS error saying that "Richfaces is not defined" triggered for the RichFaces.ajax method
[17:45:21,506] ReferenceError: RichFaces is not defined @ http://localhost:8080/Ajax4JsfAppTest/:31
And anyway it won't work as the method bean.awesomeMethod binded in the action attribute of the a4j:jsFunction isn't mentionned.
Actually, what i need to know is if i can programmatically trigger a managed bean method only with JS. And i would like also to know if i can programmatically add the a4j:jsFunction by java code to the view (does any UIComponent like HtmljsFunction exists ?)
Best Regards!