Hello Andreas,
is your action immediate=true ?
Regards
Bernd
Andreas Niemeyer schrieb:
> 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: <[email protected]>
>>>>> 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
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
>