Win a copy of Kotlin in Action this week in the Kotlin forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

how to passing parameters to managed beans?  RSS feed

 
Zaeed McColin
Ranch Hand
Posts: 90
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi guys I'm really confused
in 2 managed beans
1:users (users.jsp) for authorizing users
2:inbox (inbox.jsp) for showing inbox
now how I can get the current instance of users (users's current instance) from inbox managed beans?
please help
 
Dave Brown
Ranch Hand
Posts: 301
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi - If I'm reading your question correctly you have 2 stages..

1. users where you I assume are requesting login details... then authorizing a user before moving onto to stage

2. where you display the inbox for the logged in user..


If thats the case.. My typical approach to this would be to

a. Create a User object in your session bean.
b. Upon successfull login, set the session bean User variable to that logged in user.
c. From then on when you need the user object, you just access it via the session.
d. You can use this approach to ensure the user is logged in before any call to your inbox page is made... if the user in the session is null.. then redirect to an error page...

Hope that helps clear it up if I understood you correctly...
 
Shasi Mitra
Ranch Hand
Posts: 101
Flex Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Use this code.

FacesContext facesContext = FacesContext.getCurrentInstance();
SecondBean sBean = (SecondBean)facesContext .getApplication().getVariableResolver().resolveVariable(facesContext ,"sBean");

sBean should be the managed bean name in the faces-config.xml.

 
Dave Brown
Ranch Hand
Posts: 301
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Shasi Mitra wrote:Use this code.

FacesContext facesContext = FacesContext.getCurrentInstance();
SecondBean sBean = (SecondBean)facesContext .getApplication().getVariableResolver().resolveVariable(facesContext ,"sBean");

sBean should be the managed bean name in the faces-config.xml.



Wouldnt the properties of this bean only be available if its marked as sessionscope in the faces-config? By the sounds of it he will want to access the 'user' that was authenticated.
 
Zaeed McColin
Ranch Hand
Posts: 90
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
the code you said throws "java.lang.NullPointerException"
okay lets look at it again

1:users should login to the system, it done with users.java managed bean
so if a user don't login and wants open inbox.jsp , system should redirect the page to login.jsp

I just want know how I can get the current instance of a managed bean, from any other managed bean?

I don't know what is it for exactly! but I tried it too, but it didn't work too
 
Dave Brown
Ranch Hand
Posts: 301
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
As I said.. Why not keep your logged in 'User' object in session.

Then you can check for that in any other managed bean that requries a User to be present.

Without intending on sounding arrogant, do you understand the JSF "scope" concept, i.e Request Scope, Session Scope? because if not, then I'm sure as soon as you understand session scope, then all will become very clear.





ArAsh Dex wrote:the code you said throws "java.lang.NullPointerException"
okay lets look at it again

1:users should login to the system, it done with users.java managed bean
so if a user don't login and wants open inbox.jsp , system should redirect the page to login.jsp

I just want know how I can get the current instance of a managed bean, from any other managed bean?

I don't know what is it for exactly! but I tried it too, but it didn't work too
 
Tim Holloway
Bartender
Posts: 18709
71
Android Eclipse IDE Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
With the exception of the datamodel classes, if your backing bean references JSF classes, there's a strong chance you're doing it "wrong". Meaning non-portable, ugly, and harder to maintain/test.

When a backing bean needs access to another backing bean in JSF, the cleanest, simplest and most reusable way to accomplish this is simply to let JSF itself make the connection.

In other words, provide a setter method in the target bean and code up the faces-config file to inject the source bean into the target bean. You don't need to write any Java code at all.

If you do that, not only will you avoid having to provide those nasty drawn-out chained method calls of JSF-specific code in your target bean, you'll have a bean that can probably be tested and re-used in non-JSF environments.

Inversion of Control (IoC) is one of the fundamental concepts underlying JSF. It's worth understanding.
 
Zaeed McColin
Ranch Hand
Posts: 90
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
yes I set my "user" managed bean as session scope

okay I decided, pass my user instance to other guy managed bean via "faces-config.xml" as showing below
but still application throws null exception
please help!

faces-config.xml


and this is my user.java


and bookAdd.java


thanks
 
Taryn Mervis
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Try first adding it to a string and then the bean i used the code to to get the variable to pass it to another method as parameter and it worked for me so.

String pass =(String)FacesContext.getCurrentInstance().getApplication().createValueBinding("#{passBean.password}").getValue(FacesContext.getCurrentInstance());

hope it helps
 
Zaeed McColin
Ranch Hand
Posts: 90
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
no just password attribute
any other solution
adding book or reading mails, requires logging to system
user should logging in to system with grant (admin) access for adding books
and adding book operation should occur in bookAdd class

Mr. Dave Brown, I'm really sorry I'm student and new in JSF, whould you mind giving me an example of your solution?
thanks
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!