Friday, 15 February 2013

jsf - How can I maintain param on ajax call? -



jsf - How can I maintain param on ajax call? -

whenever create ajax call, url param expires. workaround have done pass param request within every button in:

<p:commandlink value="submit" actionlistener="#{mybean.dosomething}"> <f:param name="foo" value="#{mybean.bar}"/> </p:commandlink>

however, in scenarios can't above workaround. illustration when i'm using primefaces roweditevent:

<p:ajax event="roweditcancel" listener="#{mybean.oncancel}"/>

the param expires when create ajax phone call , results in error before invoking #{mybean.oncance} i'm reading datatable's info param in url.

so how can maintain param value when create such ajax call?

ps: mybean viewscoped

problem extension:

the <o:form> has solved part of problem, can't send params within form dynamic image streaming within table. see following:

<p:datatable value="#{mybean.data}" var="var"> <p:column headertext="thumbnail"> <p:graphicimage value="#{streamer.thumbnail}"> <f:param name="id" value="#{var.id}"/> </p:graphicimage> </p:column> </p:datatable>

streamer bean (requestscoped):

public streamedcontent getthumbnail() throws ioexception { facescontext context = facescontext.getcurrentinstance(); if (context.getrenderresponse()) { homecoming new defaultstreamedcontent(); } else { string string = context.getexternalcontext().getrequestparametermap().get("id"); long id = long.parselong(idstring); myimage img = (myimage) service.find(myimage.class, id);//get resource streamedcontent sc = new defaultstreamedcontent(img.getinputstream(), "image/jpg", img.getname()); homecoming sc; } }

here string null , parameter not passed resulting in error

register <f:viewparam>

<f:viewparam name="foo" value="#{mybean.bar}" />

and instead of <h:form>, utilize omnifaces <o:form> includeviewparams="true" (which uses under covers custom viewhandler implementation automatically collects view parameters , appends them outcome of getactionurl() method used form action url):

<o:form includeviewparams="true"> ... </o:form>

this way view params included in form's action url , hence end request parameters usual way without need fiddle <f:param> , beingness clueless within <p:ajax> (and <f:ajax>).

jsf primefaces

No comments:

Post a Comment