yippi :)

Thank you all!

Regards,
Andreas

Richard Yee schrieb:
Try using divelement.style.display="none"

Regards,

Richard


On Wed, Dec 10, 2008 at 6:27 AM, Andreas Niemeyer
<[EMAIL PROTECTED]> wrote:
Hi,

It works.

The only problem is the left space from the invisible <div> tag.


Regards,
Andreas



<div id="error_messages" style="color: darkred;visibility: visible" >
       <t:messages id="error_messages" showDetail="true" showSummary="false"
/>
</div>

....
<h:commandButton id="reportbutton" onclick="clearMessages('error_messages')"
value="#{msgs.CreateReportButton}" action="#{pdfreport.createPDFReport}" />



JavaScript:

function clearMessages(aMessagesID) {
       var divelement = document.getElementById(aMessagesID);
       divelement.style.visibility='hidden';
}


Andreas Niemeyer schrieb:
Hello Helmut,

Good proposal to handle this about JavaScript before send the form. I'll
give it a trial.

Kind regards,
Andreas


Helmut Swaczinna schrieb:
Hello Andreas,

I don't think Tobago or JSF can clear the messages for you. But you can
clear the messages on the page  yourself  with
some javascript before the action for the PDF generation gets submitted.

For example:

...
action="controller.createPDF"
onclick="clearMessagesAndSubmit('@autoId')"
...

function clearMessagesAndSubmit(actionId) {
 // Find messages and clear them
 Var message = document.getElenemtById('page:message');
 message.value = "";
 Tobago.submitAction(actionId, false);
}

I haven't tried this, but I think it should work.

Regards
Helmut

----- Original Message ----- From: "Andreas Niemeyer"
<[EMAIL PROTECTED]>
To: <users@myfaces.apache.org>
Sent: Wednesday, December 10, 2008 11:11 AM
Subject: Re: JSF servlet request in action method or navigation rule to
get binary servlet data?


Hello Bernd,

Yes, I did.

There seems to be no way to get previous messages away due I don't get
the page reloaded.

I'll open a new thread and try to describe in more detail the
"requirements".


Thank you.

Regards,
Andreas



Bernd Bohmann schrieb:
Hello Andreas,

are you calling FacesContext.getCurrentInstance().responseComplete() ?

Regards

Bernd


Andreas Niemeyer schrieb:
Hello Bernd,

Thank you for response.

Unfortunatly I have to use this servlet as a pdf dynamic provider.

The redirect works fine so far, but another thing happened.

Due some validation rules in the same method, a previous custom
FacesMessage stays displayed and only after a page reload it goes
away.

Have someone an idea?

Regards,
Andreas



Bernd Bohmann schrieb:
Hello Andreas,

maybe this help:

http://wiki.apache.org/myfaces/Sending_Files

You don't need a Servlet for sending binary data from jsf.

The magic is the responseComplete() method.

Please look at the Section

2.1.3 Faces Request Generates Non-Faces Response

of the jsf 1.1 spec.

Regards

Bernd

Andreas Niemeyer schrieb:
Hi,

I would like to send form data from a JSF page for a servlet request
with a navigation rule.

The servlet returns a content type of "application/pdf" and is
running
in a context path.

If I call it from within a action method, it works with following
code:

public String createPDFReport() {
...
 FacesContext context = FacesContext.getCurrentInstance();
 ExternalContext ext = context.getExternalContext();

 String vServletPath = "/context_path/pdf-test";
 ext.redirect(ext.encodeResourceURL(vServletPath));

 ...
 return "call_servlet";
}


My context is a portal, I'm using the JSF portal bridge.


The web.xml looks like:

...
<servlet>
 <servlet-name>pdf-test</servlet-name>
<servlet-class>com.xxx.PDFTest</servlet-class>
 <load-on-startup>20</load-on-startup>
</servlet>    ...

I would like to avoid to send a redirect and would prefer to create
a
navigation rule in the faces-config, but it fails with an exception
arised from my GenericPortlet

...

public class JSFGenericPortlet
   extends org.apache.myfaces.portlet.MyFacesGenericPortlet {
...
public void render(RenderRequest req, RenderResponse res)
       throws IOException, PortletException {
...
super.render(req, res);
}
...
}

javax.portlet.PortletException: String index out of range: -1
       at

org.apache.myfaces.portlet.MyFacesGenericPortlet.handleExceptionFromLifecycle(MyFacesGenericPortlet.java:310)


       at

org.apache.myfaces.portlet.MyFacesGenericPortlet.facesRender(MyFacesGenericPortlet.java:502)


       at

org.apache.myfaces.portlet.MyFacesGenericPortlet.doView(MyFacesGenericPortlet.java:323)


       at
javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
       at
javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
       at

com.gutzmann.portlets.JSFGenericPortlet.render(JSFGenericPortlet.java:73)



The navigation rule looks like:

   <navigation-rule>
       <from-view-id>/pages/view.xhtml</from-view-id>
       <navigation-case>
           <from-outcome>call_servlet</from-outcome>
           <to-view-id>/pdf-test/</to-view-id>
       </navigation-case>
   </navigation-rule>

I tried also `<to-view-id>/context_path/pdf-test/</to-view-id>' -
same
exception.



What is the "best practice" to do such redirect / servlet calls?


If request parameter should be changed, how would it work in the
action
method?


Many thanks fro some help!


Regards,
Andreas












Reply via email to