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.