Hi, I 've a list of filter components to make the user experience more
confortable when he is looking at a list of issues in my app. I use Tapestry
radiogroup component technique to enclose those filtters in a FilterGroup
component, It works ..! but it's not stateless. when I login to my
application as another user with a new instance of another web browser (to
avoid browser session ) it keeps all filters applyed from a previous user.
Environment services are not stateless ...?
How can I avoid this behaviour ..?
public class FilterGroup {
private FilterContainer container = new FilterContainer() ;
@Inject
private Environment environment ;
void setupRender() {
environment.push(FilterContainer.class, container) ;
}
void afterRender() {
environment.pop(FilterContainer.class) ;
}
public void onAction(Object[] ctx) {
if (container.getActiveFilters().contains((String) ctx[0]))
container.getActiveFilters().remove(ctx[0]) ;
else {
container.getActiveFilters().clear() ;
container.getActiveFilters().add((String) ctx[0]) ;
}
}
public Collection<Filter<BacklogItem>> getFilters() {
List<Filter<BacklogItem>> filters = new
ArrayList<Filter<BacklogItem>>() ;
for (String activeFilter : container.getActiveFilters())
filters.add(container.getAvailableFilters().get(activeFilter)) ;
return filters ;
}
}
**********************************************************************************
public abstract class AbstractFilter {
@Inject
private ComponentResources resources ;
@Parameter(defaultPrefix = TapestryConstants.LITERAL_BINDING_PREFIX,
required=true)
private String label ;
@Environmental
private FilterContainer container ;
protected abstract String getFilterName() ;
protected abstract Filter<BacklogItem> getFilter() ;
@SetupRender
void setupRender() {
container.getAvailableFilters().put(getFilterName(),
getFilter()) ;
}
void beginRender(MarkupWriter writer) {
Link link =
resources.createActionLink(TapestryConstants.ACTION_EVENT,
false, getFilterName()) ;
writer.writeRaw("<li>") ;
writer.element("a", "href", link.toURI()) ;
writer.write( container.getFilterState(getFilterName()) ) ;
writer.write(label) ;
writer.end() ;
writer.writeRaw("</li>") ;
}
--
View this message in context:
http://www.nabble.com/Environment-services-are-not-stateless-...---tp16733862p16733862.html
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]