Sometimes, I have to reRender some component in my applications (using JSF1.2 and RichFaces 3.3.2).
Is possible to do that programmatically in server side, or just the old school way, in client side?
Thanks.
Components are always rendered on the server (markup is then sent to the browser for DOM update). If you need to decide in runtime which components to re-render, you can do reRender=#{bean.compoentsToRender}
Take a look at <a4j:poll> or <a4j:push>.
Related
I am using <p:fileUpload> component. Is it possible to preselect and show the selected file in field before the browse button?
I am using Mojarra 2.0.3, PrimeFaces 2.2 RC2, GlassFish 3.
No, if this was possible, this would have been a huge security hole. You would then in theory be able to let the selected file point to C:/path/to/passwords.txt and then use JavaScript to submit the form and so silently get a file with sensitive data from the client without its permission.
See also:
How to set a value to a file input in HTML?
Send full client side file path to server side using p:fileUpload
I am implementing server side pagination using Richfaces, but the implementation using PaginatingDataModel requires bean to be saved in SessionScope. Using JSF 2.0, RichFaces 4.4. Refer URL below:
http://katzmaier.blogspot.in/2010/03/richfaces-server-side-pagination.html
https://community.jboss.org/thread/204250
Is there any alternate implementation to implement server side pagination using request scope?
By server side pagination, I mean data for each page to be fetched by executing queries instead of retrieving all records at once.
As answered in comment, you could use the ViewScoped instead of SessionScoped. This is a new scope available since JSF 2.0, perfect to keep data server side for a shorter time.
Here is a link of a blog talking about new features in JSF 2.0 What's new in JSF 2.0
We are developing web application using JSF. We are using rich faces on Jboss server. We have a4j command buttons , command links and a4j js functions to invoke server actions.
We have set limit render to true, render only required components. And I also set execute to "#this" . We are observing a strange behavior , All the actions associated with the form are also executed along with the button clicked, even though we have not specified the execute value to "#this". This is bringing down the performance drastically.
Is this the way JSF process POST requests or is there something else we are missing?
What you're currently describing in the question is definitely not the default behaviour of JSF nor RichFaces.
Your concrete problem is caused elsewhere. As per the comments, you seem to have created a PhaseListener for logging purposes which is re-executing the entire view for some reason. You'd need to turn off this PhaseListener or to fix its implementation.
(Using JEE6) Is it possible to have a webpage automatically update (or listen) to values from within a bean/class and display them on the JSF when these changes happen?
As KayKay mentioned you can implement some sort of polling methodology using javascript to ask the server periodically to send updates if there are any. And unless you use ajax you will have to be content with only complete page refreshes.
JSF as good as it is, sits on top of basic stateless web technology. As such unless you use Ajax or some custom code the server will only respond to a request from the client. Some libraries like icefaces have incorporated a "push" component that allows what you are looking for (from what I understand, this is a fundamental part of icefaxes). That is, to push server side changes to the client.
You have to set up a listener on your end so that your bean will be notified when a value change happens on the server (like in your backing bean which is on the server). When the change happens you can ask say, 'icefaces push' (or another library like primefaces, which you indicate you don't want to use) to send a notice to the client. The client side code (usually ajax/javascript) will process the notice and then send a request for the whole object per normal request response. That is the notice tells the client something it's interested in changed so the client can ask for an update. Aside from the notice, still request/response.
I mention icefaces push because it seems to be the favoured library for this now. But others have this as well. I don't believe the standard JSF 2.0 AJAX libraries have this.
Here are a couple of resources to look at:
(The video is a good start to get the idea of what is going on, then use the rest of the site)
http://www.icesoft.org/demos/icepush-demos.jsf
Older but I think still relevant IBM tutorial on what you want to do, using inventory changes as an example:
http://www.ibm.com/developerworks/web/library/wa-aj-dynamic/index.html
And another stack question related:
Is there a better Ajax Push for JSF 2.0 than Icefaces
Unfortunately it looks like you cannot do this with just JSF, you will have to use one of these libraries or even harder, roll your own push mechanism.
I don't know of a JSF feature to do so. I would simply do some javascript polling, using for example jquery load method to refresh the parts of the page where the values are displayed.
It would help to know what you want to do : refresh the whole page when there is a change, update somes values that are displayed from the start, or add new values to the page.
Using JSF 1.2 and RichFaces 3.3.1 on JBoss 4.2.3.
I've just started on a JSF Application. It uses XHTML files for most of its content, and a login.jsp with form-based authentication for logging in, something I understand is common in JSF applications. However, I now need to include sections from the regular pages, which include a header bar and a right panel, that have RichFace styles. I've tried dozens of combinations of ways to put the Rich tags into the login page, while still allowing the submit to go through j_security_check, but so far nothing has worked. Is there a way to do this?
Just convert login.jsp to login.xhtml. It doesn't matter for j_security_check where the request is coming from. You can just use plain HTML in a JSF/Facelets page.