Instead of storing your bean in the session, why not use Trinidad's
PageFlowScope, You can store the object in it and clear the scope
explicitly as needed.
On 2/20/07, Causevic, Dzenan <[EMAIL PROTECTED]> wrote:
I set up the tree with certain categories on one page. By selecting any of
those categories user is being sent to a another page where that category is
being displayed.
Now in order to be able to do this, I set up actionListener on the first
page that captures which category user has clicked on, and then stores it in
a bean. The second page (where user is being sent after he made selection)
is simply reading the category from that bean, and displaying it. Everything
works just fine but the problem arises when the user leaves those pages and
then comes back. This should be completely a new session (even if the
browser itself is closed old session values are still there) and the values
from any previous sessions should be reset, but they are not.
Even if the user closes the browser itself, and opens those pages in a new
browser he will still have those categories automatically pre-selected. That
is the problem. I want every time user leaves those pages, categories
selected during that session to be reset, so that values from previous
sessions dont show up anymore.
Below are actual code excerpts. I did not include how onet3Tree bean
implements the tree itself since it works fine and it's completely
irrelevant for this specific issue.
1. Page with categories implemented as tree (reffered above as a first
page):
<h:panelGroup>
<tr:tree var="occupation" value="#{
onet3Tree.model}" binding="#{onet3TreeBean.tree}">
<f:facet name="nodeStamp">
<tr:panelGroupLayout>
<tr:commandLink text="#{
occupation.onet3Title}" disabled="#{occupation.onet3Category}"
actionListener="#{onet3TreeListener.onet3ItemAction}" action="insert">
<tr:attribute name="onet3Id"
value="#{occupation.onet3Id}"/>
</tr:commandLink>
</tr:panelGroupLayout>
</f:facet>
</tr:tree>
</h:panelGroup>
2. Page where the selected category is then displayed (reffered above as a
second page):
<h:panelGroup>
<h:outputText escape="false" rendered="#{
onet3Bean.onet3Selected}" styleClass="labelText" value="#{
onet3Bean.onet3Title}" />
<tr:commandLink rendered="#{
onet3Bean.onet3Selected}" text="delete" actionListener="#{
onet3TreeListener.onet3ItemRemove}" action="refresh">
<tr:attribute name="onet3Id" value="#{
onet3Bean.onet3Id}" />
</tr:commandLink>
</h:panelGroup>
3. Tree listener (captures category on which user clicked and stores it in
bean):
import javax.faces.component.UIComponent;
import javax.faces.event.ActionEvent;
public class Onet3TreeListener {
/** Creates a new instance of Onet3TreeListener */
public Onet3TreeListener() {
}
public void onet3ItemAction(ActionEvent event)
{
UIComponent actionItem = event.getComponent();
Onet3Bean treeNode = new Onet3Bean();
String onet3Id =
(String)actionItem.getAttributes().get("onet3Id");
treeNode.setOnet3Id(onet3Id);
String onet3Title =
(String)actionItem.getAttributes().get("text");
treeNode.setOnet3Title(onet3Title);
}
}
4. Bean (where the selected category is being stored for the access by the
second page):
public class Onet3Bean {
/** Creates a new instance of Onet3Bean */
public Onet3Bean() {
}
private static String onet3Id;
private static String onet3Title;
private static boolean onet3Selected;
public void setOnet3Id(String onet3Id) {
this.onet3Id = onet3Id;
}
public String getOnet3Id() {
return onet3Id;
}
public void setOnet3Title(String onet3Title) {
this.onet3Title = onet3Title;
}
public String getOnet3Title() {
return onet3Title;
}
public boolean isOnet3Selected() {
if(onet3Id != null){
onet3Selected = (boolean)true;
} else {
onet3Selected= (boolean)false;
}
return onet3Selected;
}
}
5. faces-managed-beans.xml:
<managed-bean>
<managed-bean-name>onet3TreeListener</managed-bean-name>
<managed-bean-class>com.navisite.view.beans.Onet3TreeListener
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>onet3Bean</managed-bean-name>
<managed-bean-class>com.navisite.view.beans.Onet3Bean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
This e-mail is the property of NaviSite, Inc. It is intended only
for the person or entity to which it is addressed and may contain
information that is privileged, confidential, or otherwise protected
from disclosure. Distribution or copying of this e-mail, or the
information contained herein, to anyone other than the intended
recipient is prohibited.