Store Session scoped variable in RequestScoped FormHandler?
Hi All,
I need to store a value into session scoped variable in formHandler. Is it possible? For Example, i need to no.of times handleApplyShippingGroups is being called by a User (Session scoped) and write a condition based on that value whose effect is to that User only? But, ShippingGroupFormHandler's scope is "Request"? How to get through this?
Thanks,
VishnuVardhan
Hi,
You can use the below logic.
In ShippingGroupFormHandler.properties
$class = your.custom.Shippinggroup.fomhandler
profile=/path/to/your/profile/component
In YourShippingGroupFormHandler.java
Inside handleApplyShippingGroups(),
//increment the value
getProfile.setApplySgCallCount(getApplySgCallCount()++);
Before that, add the property - applySgCallCount - to your profile with getter and setters.
Hope this helps.
Please keep posting the issues / updates.
Thanks,
Gopinath Ramasamy
Similar Messages
-
Can we access the session scoped variable by simply using its name
The Java EE 6 Tutorial contains a "Duke's Bookstore Case Study Example”. I could not understand following statements of this case study:
*bookdetails.xhtml*
{code}
<h:outputText value="#{selected.title}"/>
{code}
*BookstoreBean.java*
{code}
public String details() {
context()
.getExternalContext()
.getSessionMap()
.put(
"selected",
getFeatured());
return ("bookdetails");
{code}
I want to know can we access the session scoped variable in bookdetails.xhtml by simply using its name as done above?It is basic Expression Language (EL) functionality, it isn't even specific to JSF. And it isn't specific to the session scope either, you can put beans in any scope (page, request, session, application, flash, conversation, whatever custom scope you create) and reference it using EL by only its name. The thing that you have to take care of is that the bean lives in SOME scope, which can be achieved using JSF specific annotations or configuration files, through CDI or by manually putting the bean in a specific scope through Java code. It's flexible, which is the nature of the Java platform.
-
Scoped Variables in Dehydration store
Hi All,
I wanted to know which table of the dehydration store the scoped variable will be stored? Can I see the contents of those variable?
Any thoughts. Thank you.Okay only the thing I wanted to check is the size of the variable. Is there any possiblity to do that? Even if now could you please tell me which table all the scoped variables are stored ?
-
Session-scope variable for JSP page used in a frame
Hi,
I don't know if there's a way to do this at the same time:
(1)- assign session scope to a variable (in order to be able to retrieve recurrently the previous value each time the JSP is called);
(2)- set its visibility in a way that it could be accessed only by the page that defines it. The JSP is used in a frameset along with an other JSP that can potentially define identical session-scoped variable (You understand why I want to keep them separate)
session.setAttribute():
seems not to be the thing I need
pageContext.setAttribute():
with SESSION_SCOPE, it behaves the same way as session.setAttribute(). with PAGE_SCOPE, condition (1) can't be satisfied.
Does anybody have an idea ?
Thanx in advance.I can see that you will not want to maintain two different files for every possible page on the site!
It may be possible to do something like <frameset rows="*" cols="50%,*">
<frame name="content1" src="file.jsp?frame=one" >
<frame name="content2" src="file.jsp?frame=two" >
</frameset>and then in the jsp<%
String frame=request.getParameter("frame");
session.setAttribute(frame+"AttributeName",attributeValue);
%>This will set up two session attributes - "oneAttributeName" and "twoAttributeName". Depending on how many variables you have, this may prove just as difficult to maintain.
You may end up having to simply pass url parameters between pages to maintain state within the individual frames, which is far from elegant also.
I am interested in how you end up solving this one. -
Hi All,
How to set a variable which should be available throughout the session, I dont want to use session scoped managed beans for this.
Using the following method is not working
FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("variableName","value");is there any other way to set session scoped variables ?Got it working
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("variableName","value");This will make the variable session scoped
Regards,
Sai Krishna -
How to Use Transient View Objects to Store Session-level Global Variables
hi
Please consider section "40.8.5 How to Use Transient View Objects to Store Session-level Global Variables"
at http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcstatemgmt.htm#ADFFD19610
Based on this documentation I created the example application
at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.01.zip
It behaves as show in the screencast at http://screencast.com/t/qDvSQCgpvYdd
Its Application Module has a Transient View Object instance "MyEmployeesContextVOVI", as master for the child View Object instance "EmpInCtxJobVI".
On rollback the Transient View Object instance keeps its row and attribute values.
Also when passivation and activation is forced (using jbo.ampool.doampooling=false ) the Transient View Object instance seems to keep its row and attribute values.
questions:
- (q1) Why does the expression #{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty} evaluate as true when a Transient View Object instance attribute value is changed (as shown in screencast at http://screencast.com/t/qDvSQCgpvYdd )?
- (q2) What would be a robust approach to make a Transient View Object instance more self-contained, and manage itself to have only one single row (per instance) at all times (and as such removing the dependency on the Application Module prepareSession() as documented in "5. Create an empty row in the view object when a new user begins using the application module.")?
many thanks
Jan VerveckenThanks for your reply Frank.
q1) Does sample 90 help ? http://blogs.oracle.com/smuenchadf/examples/
Yes, the sample from Steve Muench does help, "90. Avoiding Dirtying the ADF Model Transaction When Transient Attributes are Set [10.1.3] "
at http://blogs.oracle.com/smuenchadf/examples/#90
It does point out a difference in marking transactions dirty by different layers of the framework, "... When any attribute's value is changed through an ADFM binding, the ADFM-layer transaction is marked as dirty. ...".
This can be illustrate with a small change in the example application
at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.02.zip
It now shows the result of both these expressions on the page ...
#{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty}
#{bindings.MyEmployeesContextVOVIIterator.dataControl.dataProvider.transaction.dirty}... where one can be true and the other false respectively.
See also the screencast at http://screencast.com/t/k8vgNqdKgD
Similar to the sample from Steve Muench, another modification to the example application introduces MyCustomADFBCDataControl
at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.03.zip
public class MyCustomADFBCDataControl
extends JUApplication
@Override
public void setTransactionModified()
ApplicationModule vApplicationModule = (ApplicationModule)getDataProvider();
Transaction vTransaction = vApplicationModule.getTransaction();
if (vTransaction.isDirty())
super.setTransactionModified();
}Resulting in what seems to be more consistent/expected transaction (dirty) information,
see also the screencast at http://screencast.com/t/756yCs1L1
Any feedback on why the ADF Model layer is so eager to mark a transaction dirty is always welcome.
Currently, question (q2) remains.
regards
Jan -
What is the best method to store session variables
As the title says, what is the best method to store session
variables in a Production environment?
I have been reading the posts on sessions and have been
getting different ideas on where to store session variables, in a
db, registery, cookies etc etc
Can someone clarify possible best practice on this matter?
MatrixFrom my experience, db is the best to store client variable
data. Registry will cause you trouble in future (when data gets
overloaded) and cookies will not serve the purpose for a few % of
your users. -
How to store session variables in drop down menu (and radiobutton/checkbox)
How am I going to store session variables in the drop down menu, radio button, checkbox.
In text area, I do like below:
<input type="text" name="membershipno" size="5" maxlength="50" value="<%=((session.getValue("Smembershipno")!=null)?session.getValue("Smembershipno"):"") %>">
Any idea?Hi jeffkyt79, I could have answered this on Expert's Exchange. But I suppose it would be hard as the site is down right now :-(
Here is sample code for the form:
<form action="" name="form1">
<input type="text" name="field1" value="<%
if (session.getAttribute("field1")!=null) {
out.println(session.getAttribute("field1"));
} %>"><br>
<input type="text" name="field2" value="<%
if (session.getAttribute("field2")!=null) {
out.println(session.getAttribute("field2"));
} %>"><br>
<input type="text" name="field3" value="<%
if (session.getAttribute("field3")!=null) {
out.println(session.getAttribute("field3"));
} %>"><br>
<input type="checkbox" name="check1" value="tick"<% if (session.getAttribute("check1")!=null) out.println(" checked"); %>><br>
<% String selRadio=(session.getAttribute("r1")!=null)?(String)session.getAttribute("r1"):""; %>
<input type="radio" name="r1" value="yesdot"<% if (selRadio.equals("yesdot")) {out.println(" checked");} %>>
<input type="radio" name="r1" value="nodot"<% if (selRadio.equals("nodot")) {out.println(" checked");} %>><br>
<select name="sel">
<% String selOption=(session.getAttribute("sel")!=null)?(String)session.getAttribute("sel"):""; %>
<option value="option1"<% if (selOption.equals("option1")) {out.println(" selected");} %>>OPTION 1
<option value="option2"<% if (selOption.equals("option2")) {out.println(" selected");} %>>OPTION 2
<option value="option3"<% if (selOption.equals("option3")) {out.println(" selected");} %>>OPTION 3
</select>
</form>
And here's the revised javascript function to put in form1.jsp:
function newWin() {
f=document.form1.elements;
str="?";
mypage="test2.jsp"; // I've hardcoded the url for testing but you can fix this
for (i=0;i<f.length;i++) {
if (f.type=="text") {
if (f[i].value!="") {
str=str+f[i].name+"="+f[i].value+"&";
continue;
if (f[i].type=="checkbox"||f[i].type=="radio") {
if (f[i].checked) {
str=str+f[i].name+"="+f[i].value+"&";
if (f[i].type=="select-one") {
str=str+f[i].name+"="+f[i].options[f[i].selectedIndex].value+"&";
str=str.substr(0,str.length-1);
// now open the popup
mypage+=str;
win=window.open(mypage, 'myname'); // I've left out the winprops but you can fix this
If you can ask any more questions, could you do it on EE (if possible!!). I know this works because I've tested it. -
Session state variables across multiple ApEx applications
We have a suite of loosely integrate ApEx applications that all share a common authentication scheme. When you first log in we attempt to load a series of session state variables with temporary data to streamline various logging and authentication related activities for the life of the session.
However, these session variables seem to disappear when you move from one application to another, so they are not truly tied to just the "session" which carries over across all applications, but the application from which the session state is set.
What is the suggested way, keeping in mind that the data being held may have security related context, to preserve values during a session, but regardless of which ApEx application you are in.
The method we are using to share the authentication is using a common "Cookie Name" from a common subscribed authentication scheme as suggested elsewhere on this site and seems to work very well outside of this specific issue.
Thanks in advance,
BarneyApologies for the delay getting back on this.
My use of the word "disappear" was probably misleading. They were not visible from the second application. When setting "Session State" I was under the impression that it was setting it for the authenticated session, not for the specific application. (I am referring to the: apex_util.set/get_session_state).
Your solution will work fine, as long as I know which application the user last authenticated against. However, it could be one of over 30 (and growing) different applications which would require me writing a program to go through every "p_flow" to try and find a valid value every time I need to reference the field.
It would be really beneficial if you could store true Session variables which stay alive for the life of the authenticated session and is available to anything authenticated against that session id. This would streamline alot of cross-application program development.
The "get/set_session_state" is a misleading as it is not a Session value, but an Application value. The Session exists across multiple applications, while this procedure does not.
Thanks,
Barney -
Add FacesMessage to FacesContext in an session scoped bean HOWTO?
I have an simple question. How can I add an FacesMessage to the FacesContext in a session scoped bean.
This code works fine for request scoped beans.
String message = "Some message";
FacesMessage curentMessage = new FacesMessage(message, message);
curentMessage.setSeverity(FacesMessage.SEVERITY_ERROR); //Mark as ERROR
context.addMessage(�userForm�, curentMessage); When I change bean scope to "session" I am getting java.lang.IllegalStateException at the last line when adding message to context.
Thanks:
-- NerminI have an simple question. How can I add an
FacesMessage to the FacesContext in a session scoped
bean.
This code works fine for request scoped beans.
String message = "Some message";
FacesMessage curentMessage = new FacesMessage(message,
message);
curentMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
//Mark as ERROR
context.addMessage(�userForm�, curentMessage); When I change bean scope to "session" I am getting
java.lang.IllegalStateException at the last line when
adding message to context.
Thanks:
-- NerminHow do you get "context"? If you are storing it as an instance variable of the bean, then you
should expect to get an exception. The FacesContext is scoped only to one request. Instead
of storing it in the bean, use FacesContext.getCurrentInstance() each time you need to use it. -
NullPointerException When trying to Get Session Scoped Bean data in another ManagedBean
hello
i wont to access to some data in my session scoped bean from a request bean so when i try to get this data all i get is
com.sun.faces.mgbean.ManagedBeanCreationException: An error occurred performing resource injection
on managed bean «discussionlaoder»
in the end of the exception there is
Caused by: java.lang.NullPointerException at Hiber.discussionlaoder.init(discussionlaoder.java:35)
this is my code:
1-the request scoped bean
@ManagedBean
@RequestScoped
public class discussionlaoder {
private MyadmninHelper halper;
@ManagedProperty(value="#{serviceBean}")
private ServicesBean serviceBean;
@PostConstruct
public void init() {
halper=getServiceBean().getHalper(); // line 35
//seter and geter code
2-the sesions scoped bean
@ManagedBean (eager=true)
@SessionScoped
public class ServicesBean {
private MyadmninHelper halper;
//seter and geter code
am using glassfish server 3.1
thank's for helpWhat you need to do is fix all those typos in your code, then you don't have to override names.
- the proper Java class name is DiscussionLoader, not discussionlaoder (fix english typo also)
- if you want to inject a class named ServicesBean, then also call the property the same.
@ManagedProperty
public ServicesBean servicesBean;
But what you're doing now is call the class 'ServicesBean' and then in your managed bean declaration you seem to change your mind and it should all of a sudden be 'serviceBean'. Well then rename the class so you don't have your typo anymore! -
I want to keep client-specific information for each incoming connection, but i heard it cannot be done with session variable. i read in a book that session variables in a servlet (or scriptlet section of a jsp page) are shared among all incoming threads (therefore all clients) accessing the servlet.
I guess a simple example of what i want to acheive is a shopping cart, but keeping the shopping cart order in a session-like variable specific to the original client machine/user who placed the order.
I thought of doing something like:
request.getSession().setAttribute("ShoppingCart", cart);
inside my doGet() method in a servlet. And a book author says it won't work. He says ff I use a member to keep information about user1, sometimes the session variable may be overwritten by user2 if they are accessing the servlet at the same time.
1) Can someone confirm whether session variables are shared among all incoming requests to the same servlet?
2) If so, how can i easily keep track of incoming user/client mahcine-specific information, without using cookies or other client-side storage methods.
3) If client side storage is necessary (to keep user info), what are the common techniques and the classes used?
I am fairly new to j2ee so i would appriciate it if you can explain in layman's terms.Hi,
Session scope is made to save the user specific information only. All class(servlet) level members(state) can be shared by all incoming thread. So its a bad practice, if we used class level session variable which stores the client specific info.
I dont think session will overwritten if you used session var locally(inside any method).
When any user logs in you should create a new session for that user.
Means if you have LoginServlet.java file which have log in functionality, Here only you need to create new session.
HttpSession session = request.getSession();
Other than this file every where you need to use
request.getSeission(false);
In your case it would be
request.getSession(false).setAttribute("ShoppingCart", cart);
Hope This will help you. -
Session scope variables and weird behaviour of AdfContext()
Hello,
what is the best method and correct API to create a session scope variable?
I am currently using ADFContext().getCurrent().getSessionScope().get()/put(), but it looks like it has some problems: for some unkown reasons I loose the variable, that is get() returns null when called from a method of a (overridden)ViewRowImpl. Why does this happen?
Thanks you in advanceThere are a couple of ways you can set values on a sessions scope but I would have to question if you really need a scope as high as session to accomplish what you want to do. At any rate, you should be able to store the value using the method you described but you could also try setting it using EL by using the setExpressionValue and resolveExpression methods in JSFUtils.java (you can find this in the latest fusion demo application). JSFUtils also has a getFromSession and storeOnSession that you could try.
With all that said I don't think it is good practice to access scope variables from your model layer. You should write your method in the ViewRowImpl class to accept the value as a method parameter and then pass the value in through the binding layer or when invoking the method from your bean class. -
Is there any facility to store session data temporarily and use it for Calc
Hi
I would like to know is there any facility to store session data temporarily and that can use it for calculation int BI Beans.
ANy idea or thoguhts would be appreciable .
Thanks n Advance
AnwarOne way to do is to create a temporary variables in the AW and store values in these variables. Not sure if it fits on what you are doing. You can always store data on the BIBeans Applications layer. Not sure what your use-case is.
Swapan. -
How to store serval char variables into a string variable?
I have serval char variables, but i don't know how to put them together (without using arrays). I am thinking to store these char variables into a string variable but i don't know how to do it. For example,
char letter1 = 'a', letter2 = 'b', letter3 = 'c';
String letters;
then how can i do to make letters = "abc" from using letter1,2,3?
I am just a beginner of Java, if anyone can help me, i will appreciate that very much!!!String letters=""+leter1+letter2+letter3;is fine and dandy. What it actually compiles to is
String letters = new StringBuffer().append(letter1).append(letter2).append(letter3).toString();Which ofcourse is much more code to write, but still good to know.
So do see the API for java.lang.StringBuffer.
Heikki
Maybe you are looking for
-
Can not preview articles tried to refresh works sometime then stops
when I try to check mail or roll over articles to preview then nothing happen if you keep trying to refresh it will start to work but when you return to home then it stops
-
Posterize filter not functioning in Photoshop Elements 12
I just purchased Photoshop Elements 12 for this very feature and now I find out when I open a photo and apply the posterize filter that it does NOTHING. The level of posterization window just sits there open and no matter what level from 2-25-70 or
-
Error Message--ITunes runs in 64-bit mode. Uncheck the Open in 32-bit mode in Get info for ITunes. However it is UNCHECKED. I cannot access itunes at all. What now?
-
How to trace Logs for WebService connectivity - 3rd Party to ECC
Hi Experts, Basically it's a simple scenario, the 3rd party will send a soap request with the information in it and wiill be sent to ECC and be written on a table. I'm wondering on how to trace logs on the soap request sent from 3rd party to an ECC e
-
How can we set default value within html:file
Hai, To set default value to text box i use the following code. It works well. <html:text property="modifyserverdesc" value="<%= serverDesc%>" styleClass="text" size="38"/>But for file i use the code <html:file styleClass="file" property="modifyserve