voyent
Messages posted by: rthomas  XML
Profile for rthomas -> Messages posted by rthomas [10]
Author Message
Thanks for your response. I was in error in the snippet that I included above:

<ice:inputFile id="fu" label="Submit" actionListener="#{archiver.uploadFile}"/>

The version I was running had a reference to the message bundle, i.e.:

<ice:inputFile id="fu" label="#{messages['lbl_submit']}"
actionListener="#{archiver.uploadFile}"/>

So the error is caused by the upload servlet being unable to find the messages bundle, which is used all throughout the rest of my application.

I decided to defer using the bundle for the file upload for now, and just hard coded the "Submit" label. This avoids the exception, and my actionListener is called upon completion of the upload.

BUT........

After the listener is called, there is:

java.lang.IllegalArgumentException: method not found: destroy for component: testManager

I will zip up a stripped down version of my code later and send it, but what appears to be now happening is this: the Seam scope of my backing bean and session bean are being ignored and the system is attempting to destroy them. In the above case, the "testManager" is a SESSION scoped session bean injected into the SESSION scoped backing bean which contains the actionListener. So it looks like something is trying to destroy these objects in spite of their Seam scope declarations.

To summarize:
1. The uploadServlet is unable to locate the application messages.properties file, even though it is properly configured and accessible throughout the rest of the application.
2. The uploadServlet is ignoring the Seam scope of the backing bean containing the actionListener


I'm still confused. The messages.properties file in the showcase contains application-specific messages. Does it also contain messages to be used by the inputFile component? I see nothing that relates to "built in" error messages required by Icefaces.

And back to the original problem: Even though I have a messages.properties file, the upload servlet exception indicates that it cannot find the file, not that a particular message is missing. (In the latter case, I assume that the key would be output, just as happens if a key-value pair is missing from the properties.)

To summarize:

1. The upload servlet is looking for a messages.properties file
2. I have a messages.properties file, configured in faces-config.xml which my application finds and uses.
3. My messages.properties file of course does not have the key-value pairs on which the inputFile component is supposedly relying.

So:

4. Is there a properties file required by the inputFile component?
or
5. Must an application messages file include tags required by Icefaces?

This just doesn't make any sense. I'm obviously missing something here.

Thanks.
I already have it. All the text in my application comes from my messages.properties file.

But this begs the question. Why is the upload servlet trying to retrieve application-specific localized messages for its exception handling?
I have an inputFile element:

Code:
<ice:inputFile id="fu" label="Submit" actionListener="#{archiver.uploadFile}"/>


Upon pressing the Submit button,my action listener is called (it just logs a message), then:

13:17:00,785 ERROR [[uploadServlet]] Servlet.service() for servlet uploadServlet threw exception
java.lang.IllegalArgumentException: no file extension in servlet path: /uploadHtml
at org.jboss.seam.mock.MockViewHandler.getActionURL(MockViewHandler.java:44)
at org.jboss.seam.jsf.SeamViewHandler.getActionURL(SeamViewHandler.java:74)
at org.jboss.seam.faces.FacesManager.redirect(FacesManager.java:154)
at org.jboss.seam.faces.Redirect.execute(Redirect.java:139)
at org.jboss.seam.exception.DebugPageHandler.handle(DebugPageHandler.java:32)
at org.jboss.seam.exception.Exceptions.handle(Exceptions.java:75)
at org.jboss.seam.web.ExceptionFilter.endWebRequestAfterException(ExceptionFilter.java:114)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:70)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Unknown Source)

My web.xml includes the following, taken from the examples:

<context-param>
<param-name>com.icesoft.faces.uploadMaxFileSize</param-name>
<param-value>10000000</param-value>
</context-param>

<context-param>
<param-name>com.icesoft.faces.uploadDirectory</param-name>
<param-value>/</param-value>
</context-param>
.....
<servlet>
<servlet-name>uploadServlet</servlet-name>
<servlet-class>com.icesoft.faces.component.inputfile.FileUploadServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>
.....
<servlet-mapping>
<servlet-name>uploadServlet</servlet-name>
<url-pattern>/uploadHtml</url-pattern>
</servlet-mapping>

I get the same result with both Icefaces 1.7.0 and 1.7.1. My commons-fileupload.jar is version 1.2.1

Am I missing something here? Thanks for any advice.
I realize this is really a Seam configuration issue, as far as finding text for an error message. I'll post separately on the root cause exception in the upload servlet
I have specified an inputFile element:

<ice:inputFile id="fu" label="Submit" actionListener="#{archiver.uploadFile}"/>

My actionListener gets called (it just logs a message), but then there is an exception:

12:20:38,114 ERROR [[Persistent Faces Servlet]] Servlet.service() for servlet Persistent Faces Servlet threw exception
java.util.MissingResourceException: Can't find bundle for base name org.jboss.seam.international.messages, locale en

This occurs whether or not I include an h:message element

Thanks for any help.
The example you provide looks like it is for the "paging" approach using buttons (next page, fast forward etc.). What I want is a vertical scroll bar, like the one shown in the component showcase when the "Scrolling" option is selected.
I want to use a scrolling dataPaginator, and have been looking at the reference manual, the tutorials, the component showcase and the tld documentation. These provide bits and pieces of information, but no complete overview. Is there additional documentation which I am missing?

All I've been able to figure out so far is that I need to add a dataPaginator
within a panelGrid in the same form as my table. So I have:

<ice:dataTable id="accounts" var="account" value="#{accountManager.accounts}" rows="5" >
<ice:column>
..........
</ice:dataTable>
<ice:panelGrid columns="1" columnClasses="standardTable_ColumnCentered">
<ice:dataPaginator id="scroller" for="accounts"
rowsCountVar="rowsCount"
displayedRowsCountVar="displayedRowsCount"
firstRowIndexVar="firstRowIndex"
lastRowIndexVar="lastRowIndex"
pageCountVar="pageCount"
pageIndexVar="pageIndex"/>
</ice:panelGrid>

.. and added the six variables to my "account" bean. I'm not sure if the scroll bar is supposed to be visible when there are less rows than the maximum, but when I added a sixth row, the table simply displayed the first five, and no scroller. Clearly I must be missing something here.

Does the 1.7.1 version of the showcase have more complete examples?

On a separate but related topic, I'm baffled by what I see if I look at the page source in a browser. In the case of the Data Paginator in the showcase, if I view the source (either in IE or Mozilla), I find no trace of the paginator, or indeed of any of the text on e.g. the Data Paginator tab.

I'm new to JSF/Facelets technology, and browser UI implementation in general, so I must be ignorant of some pretty basic concepts here.

Any help or advice appreciated.
Problem solved. Please ignore. I didn't include the "rendered" attribute.
I've tried adding a popup panel to a page using both the sample code shown in the showcase, and the code from the panelPopup.jspx. The panel pops up, but the close button does nothing. I've been using both Icefaces 1.6.2 and 1.7.0, and getting the same result.

Since invoking the popup works, I assume there is no trouble with the backing bean.

Any suggestions? Thanks.

 
Profile for rthomas -> Messages posted by rthomas [10]
Go to:   
Powered by JForum 2.1.7ice © JForum Team