Hi all. I have some components being rendered in a loop. On initial
render, everything comes out fine. However, when I try to click on an
eventlink within one of the rendered components, I get an application
exception. What is going wrong here?
---
SearchFilterContainer.java
---
public class SearchFilterContainer
{
@Inject
private SearchFilterService searchFilterService;
@Property
private SearchFilter currentFilter;
public List<SearchFilter> getChronologicalSearchFilters()
{
return searchFilterService.getChronologicalFilters();
}
public String getPreFiltersText()
{
return messages.get("pre-search-filters-text");
}
public boolean isAssetStatusFilter()
{
return currentFilter.getFilterType() == SearchFilterType.ASSET_STATUS;
}
---
SearchFilterContainer.tml
---
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
xmlns:p="tapestry:parameter"
xmlns:sf="tapestry-library:dam/search/filters">
<t:loop source="chronologicalSearchFilters" value="currentFilter"
formState="ITERATION">
<t:if test="assetStatusFilter">
<sf:refineassetstatusfilter
assetStatusRefineOption="currentFilter.getFilterValue()" />
</t:if>
</t:loop>
</t:container>
---
RefineAssetStatusFilter.java
---
public class RefineAssetStatusFilter extends SearchComponent
{
@Parameter(required=true)
private AssetStatusRefineOptions assetStatusRefineOption;
public String getFilterText()
{
return assetStatusRefineOption.getDisplayName();
}
public void onRemove()
{
// do stuff
}
}
---
RefineAssetStatusFilter.tml
---
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
<div class="search-filter rectangular-pill">
${getFilterText()}
<t:eventlink event="remove" class="remove-filter-icon">×</t:eventlink>
</div>
</t:container>
---
Exception information
---
An unexpected application exception has occurred.
- org.apache.tapestry5.ioc.internal.OperationException
Failure reading parameter 'assetStatusRefineOption' of component
dam/SearchResults:instantsearch.searchfiltercontainer.refineassetstatusfilter:
Property 'currentFilter' (within property expression
'currentFilter.getFilterValue()', of
collective.app.dam.components.search.filters.SearchFilterContainer@48e53372)
is null.
locationclasspath:collective/app/dam/components/search/filters/SearchFilterContainer.tml,
line 8
3 xmlns:p="tapestry:parameter"
4 xmlns:sf="tapestry-library:dam/search/filters">
5
6 <t:loop source="chronologicalSearchFilters" value="currentFilter"
formState="ITERATION">
7 <t:if test="assetStatusFilter">
8 <sf:refineassetstatusfilter
assetStatusRefineOption="currentFilter.getFilterValue()" />
9 </t:if>
10
trace
- Triggering event 'remove' on
dam/SearchResults:instantsearch.searchfiltercontainer.refineassetstatusfilter
- org.apache.tapestry5.runtime.ComponentEventException
Failure reading parameter 'assetStatusRefineOption' of component
dam/SearchResults:instantsearch.searchfiltercontainer.refineassetstatusfilter:
Property 'currentFilter' (within property expression
'currentFilter.getFilterValue()', of
collective.app.dam.components.search.filters.SearchFilterContainer@48e53372)
is null.
contexteventTyperemovelocationclasspath:collective/app/dam/components/search/filters/SearchFilterContainer.tml,
line 8
- org.apache.tapestry5.ioc.internal.util.TapestryException
Failure reading parameter 'assetStatusRefineOption' of component
dam/SearchResults:instantsearch.searchfiltercontainer.refineassetstatusfilter:
Property 'currentFilter' (within property expression
'currentFilter.getFilterValue()', of
collective.app.dam.components.search.filters.SearchFilterContainer@48e53372)
is null.
locationclasspath:collective/app/dam/components/search/filters/SearchFilterContainer.tml,
line 8
- java.lang.NullPointerException
Property 'currentFilter' (within property expression
'currentFilter.getFilterValue()', of
collective.app.dam.components.search.filters.SearchFilterContainer@48e53372)
is null.